문자 필터는 텍스트를 한 번에 한 문자씩 검사하고 필터링 작업을 수행합니다. 문자 필터에는 유형 필드가 필요하며, 일부 필터에는 추가 옵션도 필요합니다.
"charFilters": [ { "type": "<filter-type>", "<additional-option>": <value> } ]
The sample index definitions and queries on this page use the sample collection named minutes. To try these examples, load the minutes collection on your cluster and navigate to the Create a Search Index page in the Atlas UI following the steps in the Create a MongoDB Search Index tutorial. Then, select the minutes collection as your data source, and follow the example procedure to create an index from the Atlas UI or using mongosh.
➤ 인터페이스 선택 드롭다운 메뉴를 사용하여 이 페이지의 예시를 실행할 방법을 설정합니다.
문자 필터 유형
MongoDB Search는 다음 유형의 문자 필터하다 지원합니다.
htmlStrip
htmlStrip 문자 필터는 HTML 구성을 제거합니다.
속성
htmlStrip 문자 필터하다 에는 다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
|---|---|---|---|
| 문자열 | 네 | 이 문자 필터 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 배열 | 네 | 필터링에서 제외할 HTML 태그가 포함된 목록입니다. |
예시
다음 인덱스 정의 예제에서는 htmlStrippingAnalyzer 이라는 사용자 지정 분석기를 사용하여 회의록 collection의 text.en_US 필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다:
htmlStrip문자 필터를 사용하여a태그를 제외한 텍스트에서 모든 HTML 태그를 제거합니다.Generate tokens based on word break rules from the Unicode Text Segmentation algorithm using the standard tokenizer.
다음 쿼리는 head text.en_US minutes collection의 필드에서 문자열의 발생을 찾습니다.
문자열 head 이(가) HTML 태그를 지정하다 <head>의 일부이기 때문에 MongoDB Search는 _id: 1 이(가) 포함된 문서 를 반환하지 않습니다. _id: 3 이 있는 문서 에 HTML 태그가 포함되어 있지만 head 문자열이 다른 곳에 있으므로 문서 일치합니다. 다음 표는 MongoDB Search가 htmlStrippingAnalyzer를 사용하여 minutes 컬렉션의 문서 _id: 1, _id: 2, _id: 3 의 text.en_US 필드 값에 대해 생성하는 토큰을 보여줍니다.
문서 ID | 출력 토큰 |
|---|---|
|
|
|
|
|
|
icuNormalize
The icuNormalize character filter normalizes text with the ICU Normalizer. It is based on Lucene's ICUNormalizer2CharFilter.
속성
icuNormalize 문자 필터에는 다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
|---|---|---|---|
| 문자열 | 네 | 이 문자 필터 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의 예제에서는 normalizingAnalyzer 이라는 사용자 지정 분석기를 사용하여 회의록 collection의 message 필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다:
icuNormalize문자 필터를 사용하여message필드 값의 텍스트를 정규화합니다.공백 토크나이저를 사용하여 단어 사이의 공백 발생을 기반으로 필드의 단어를 토큰화합니다.
다음 쿼리는 no message minutes collection의 필드에서 문자열 (숫자)의 발생을 검색합니다.
MongoDB Search 문서 문자 필터하다 사용하여 _id: 4 no 필드 № icuNormalize 의 쿼리 텀 를 정규화하고 no "number ". MongoDB Search는 normalizingAnalyzer을 사용하여 문서 _id: 4 의 message 필드 값에 대해 다음 토큰을 생성합니다.
문서 ID | 출력 토큰 |
|---|---|
|
|
매핑
mapping 문자 필터는 사용자가 지정한 정규화 매핑을 문자에 적용합니다. Lucene의 MappingCharFilter를 기반으로 합니다.
속성
mapping 문자 필터하다 에는 다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
|---|---|---|---|
| 문자열 | 네 | 이 문자 필터 유형을 식별하는 인간 가독형 레이블입니다. 값은 |
| 객체 | 네 | 쉼표로 구분된 매핑 목록을 포함하는 객체입니다. 매핑은 한 문자 또는 문자 그룹을 |
예시
다음 인덱스 정의 예제에서는 mappingAnalyzer 이라는 사용자 지정 분석기를 사용하여 회의록 collection의 page_updated_by.phone 필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다:
mapping문자 필터를 사용하여 전화 필드에서 하이픈(-), 점(.), 여는 괄호((), 닫는 괄호()) 및 공백 문자를 제거합니다.키워드 토크나이저를 사용하여 전체 입력을 단일 토큰으로 토큰화합니다.
다음 쿼리는 page_updated_by.phone 필드에서 1234567890 문자열을 검색합니다.
MongoDB Search 결과에는 phone 문자열의 숫자가 쿼리 문자열과 일치하는 하나 문서 포함되어 있습니다. {MongoDB} 문자 필터하다 사용하여 이러한 문자를 제거하고 단일 토큰을 생성했기 때문에 쿼리 mapping 에 전화번호 지역 번호와 숫자 사이의 하이픈이 포함되지 않았더라도 MongoDB Search는 문서 를 쿼리 문자열과 일치시켰습니다. 필드 값. 구체적으로 MongoDB Search는 _id: 1을(를) 사용하여 문서 의 phone 필드 에 대해 다음 토큰을 생성했습니다.
문서 ID | 출력 토큰 |
|---|---|
|
|
또한 MongoDB Search _id: 1 (123)-456-7890123-456-7890MongoDB,, 123.456.7890 등의 검색에 대해 이( 분석기 searchAnalyzer) 포함된 문서 일치시킵니다 . 지정된 경우 사용). 다음 표는 MongoDB Search가 쿼리 에서 하이픈(-), 점(.), 여는 괄호((), 닫는 괄호( )) 및 공백 문자의 인스턴스를 제거하여 생성하는 토큰을 보여줍니다. 텀:
쿼리 용어 | 출력 토큰 |
|---|---|
|
|
|
|
|
|
페르시아어
persian 문자 필터는 폭 없는 비접합자의 인스턴스를 공백 문자로 대체합니다. 이 문자 필터는 Lucene의 PersianCharFilter를 기반으로 합니다.
속성
persian 문자 필터에는 다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
|---|---|---|---|
| 문자열 | 네 | 이 문자 필터 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의 예제에서는 persianCharacterIndex 이라는 사용자 지정 분석기를 사용하여 회의록 collection의 text.fa_IR 필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다:
필드 값에서 인쇄되지 않는 문자를 공백 문자로 바꾸려면
persian문자 필터를 적용합니다.공백 토크나이저를 사용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성할 수 있습니다.
다음 쿼리는 text.fa_IR 필드에서 صحبت라는 용어를 검색합니다.
MongoDB Search는 쿼리 텀 포함된 _id: 2 문서 반환합니다. MongoDB Search는 먼저 너비가 0인 비조이너의 인스턴스를 공백 문자로 바꾼 다음 단어 사이의 공백 발생 여부에 따라 필드 값의 각 단어에 대한 개별 토큰을 생성하여 쿼리 텀 문서 와 일치시킵니다. 구체적으로 MongoDB Search는 _id: 2이 있는 문서 에 대해 다음과 같은 토큰을 생성합니다.
문서 ID | 출력 토큰 |
|---|---|
|
|
자세히 알아보기
mapping 문자 필터를 사용하는 추가 인덱스 정의 및 쿼리를 보려면 다음 참조 페이지 예시를 참조하세요.
shingle 토큰 필터
regexCaptureGroup 토크나이저