토큰 필터
이 페이지의 내용
토큰 필터는 다음과 같은 작업을 수행합니다.
어간 처리: "talking", "talked", "talks"와 같은 관련 단어를 어근인 "talk"로 줄입니다.
편집: 공개 문서에서 민감한 정보를 제거합니다.
토크필터에는 유형 필드가 필요하며, 일부는 추가 옵션도 필요합니다. 다음과 같은 구문을 갖습니다:
"tokenFilters": [ { "type": "<token-filter-type>", "<additional-option>": <value> } ]
다음 샘플 인덱스 정의 및 쿼리는 minutes
라는 샘플 컬렉션을 사용합니다. minutes
컬렉션을 Atlas 클러스터의 데이터베이스에 추가하는 경우 Atlas UI의 Atlas Search Visual 또는 JSON Editor에서 다음 샘플 인덱스를 만들고 이 컬렉션에 대해 샘플 쿼리를 실행할 수 있습니다. 이러한 인덱스를 생성하려면 Atlas UI에서 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 수정하여 토큰 필터를 사용하는 사용자 지정 분석기를 추가하세요.
참고
Atlas UI에서 Visual Editor을(를) 사용하여 사용자 지정 분석기를 추가하는 경우 Atlas UI는 Custom Analyzers 섹션에 분석기에 대한 다음 세부 정보를 표시합니다.
이름 | 사용자 지정 분석기를 식별하는 레이블입니다. |
사용 분야 | 사용자 지정 분석기를 사용하는 필드입니다. 사용자 지정 분석기를 사용하여 필드를 분석하지 않는 경우 값은 없음입니다. |
문자 필터 | 사용자 지정 분석기에 구성된 Atlas Search 문자 필터 입니다. |
토크나이저 | 사용자 지정 분석기에 구성된 Atlas Search 토크나이저. |
토큰 필터 | 사용자 지정 분석기에서 구성된 Atlas Search 토큰 필터입니다. |
작업 | 사용자 지정 분석기에서 수행할 수 있는 작업을 나타내는 클릭 가능한 아이콘입니다.
|
asciiFolding
asciiFolding
토큰 필터하다 는 기본 라틴 유니코드 차단 에 없는 알파벳, 숫자 및 기호 유니코드 문자를 사용 가능한 경우 해당 ASCII로 변환합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | no | 토큰 필터의 출력에 원래 토큰을 포함할지 또는 생략할지 여부를 지정하는 문자열입니다. 값은 다음 중 하나일 수 있습니다:
기본값: |
예시
다음 인덱스 정의는 asciiConverter
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.first_name
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
asciiFolding
토큰 필터를 적용하여 필드 값을 ASCII에 해당하는 값으로 변환합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
asciiConverter
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운 메뉴에서 asciiFolding 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping를 클릭하여 _updated_by.first_name필드에 사용자 지정 분석기를 적용합니다.
page_updated_by.first_name를 Field Name 드롭다운에서 Data Type의 문자열과 함께 선택하세요.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
asciiConverter
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "dynamic": false, "fields": { "page_updated_by": { "type": "document", "dynamic": false, "fields": { "first_name": { "type": "string", "analyzer": "asciiConverter" } } } } }, "analyzers": [ { "name": "asciiConverter", "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "asciiFolding" } ] } ] }
다음 쿼리는 minutes 컬렉션의 first_name
필드에서 ASCII에 해당하는 이름을 사용하여 이름을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "Sian", "path": "page_updated_by.first_name" } } }, { "$project": { "_id": 1, "page_updated_by.last_name": 1, "page_updated_by.first_name": 1 } } ])
[ { _id: 1, page_updated_by: { last_name: 'AUERBACH', first_name: 'Siân'} } ]
Atlas Search는 결과에 _id: 1
이 있는 문서를 반환하는데, 이는 Atlas Search가 문서의 page_updated_by.first_name
필드에 대해 다음 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 Sian
과 일치시키는 데 사용했기 때문입니다.
필드 이름 | 출력 토큰 |
---|---|
|
|
daitchMokotoffSoundex
daitchMokotoffSoundex
토큰 필터는 Daitch-Mokotoff 사운덱스 기반으로 소리가 동일한 단어에 대한 토큰을 생성합니다. 음성 알고리즘. 이 필터는 각 입력에 대해 여러 인코딩을 생성할 수 있으며, 인코딩된 각 토큰은 6 자리 숫자입니다.
참고
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | no | 토큰 필터의 출력에 원래 토큰을 포함할지 또는 생략할지 여부를 지정하는 문자열입니다. 값은 다음 중 하나일 수 있습니다:
기본값: |
예시
다음 인덱스 정의는 dmsAnalyzer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.last_name
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
daitchMokotoffSoundex
토큰 필터를 적용하여 같은 소리의 단어에 대해 토큰을 인코딩합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
dmsAnalyzer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 daitchMokotoffSoundex 선택하고 originalTokens 필드에 대해 다음 표에 표시된 값을 선택합니다.
필드값originalTokens
include
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.last_name에 사용자 지정 분석기를 적용합니다.
page_updated_by.last_name을 Field Name 드롭다운에서 Data Type의 문자열과 함께 선택하세요.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
dmsAnalyzer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "dynamic": false, "fields": { "page_updated_by": { "type": "document", "dynamic": false, "fields": { "last_name": { "type": "string", "analyzer": "dmsAnalyzer" } } } } }, "analyzers": [ { "name": "dmsAnalyzer", "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "daitchMokotoffSoundex", "originalTokens": "include" } ] } ] }
다음 쿼리는 minutes 컬렉션의 page_updated_by.last_name
필드에서 AUERBACH
와 비슷하게 들리는 용어를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "AUERBACH", "path": "page_updated_by.last_name" } } }, { "$project": { "_id": 1, "page_updated_by.last_name": 1 } } ])
[ { "_id" : 1, "page_updated_by" : { "last_name" : "AUERBACH" } } { "_id" : 2, "page_updated_by" : { "last_name" : "OHRBACH" } } ]
두 문서의 용어가 음성적으로 유사하고 동일한 6자리 숫자(097400
및 097500
)를 사용하여 코딩되어 있기 때문에 Atlas Search는 _id: 1
및 _id: 2
이 포함된 문서를 반환합니다. 다음 표는 Atlas Search가 결과의 문서에 대해 생성하는 토큰(검색 가능한 용어 및 6자리 인코딩)을 보여줍니다.
문서 ID | 출력 토큰 |
---|---|
|
|
|
|
edgeGram
edgeGram
토큰 필터는 텍스트 입력의 왼쪽 또는 '가장자리'로부터의 입력을 구성된 크기의 n-그램으로 토큰화합니다.
참고
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | 네 | 생성되는 n-그램의 최소 길이를 지정하는 숫자입니다. 값은 |
| integer | 네 | 생성되는 n-그램의 최대 길이를 지정하는 숫자입니다. 값은 |
| 문자열 | no | 토큰을
기본값: |
예시
다음 인덱스 정의는 titleAutocomplete
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
icuFolding
토큰 필터를 사용하여 토큰에 문자 접기를 적용합니다.edgeGram
토큰 필터를 사용하여 왼쪽에서 4~7자 길이의 토큰을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
titleAutocomplete
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 icuFolding을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 edgeGram 선택하고 필드에 대해 다음 표에 표시된 값을 입력합니다.
필드값minGram
4
maxGram
7
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
titleAutocomplete
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "titleAutocomplete", "mappings": { "dynamic": false, "fields": { "title": { "type": "string", "analyzer": "titleAutocomplete" } } }, "analyzers": [ { "name": "titleAutocomplete", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "icuFolding" }, { "type": "edgeGram", "minGram": 4, "maxGram": 7 } ] } ] }
다음 쿼리는 minutes 컬렉션의 title
필드에서 mee
로 시작하고 그 뒤로 다른 문자 여러 개가 이어지는 용어를 검색합니다.
db.minutes.aggregate([ { "$search": { "wildcard": { "query": "mee*", "path": "title", "allowAnalyzedField": true } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 1, title: 'The team's weekly meeting' }, { _id: 3, title: 'The regular board meeting' } ]
문서에 쿼리 기준과 일치하는 meeting
이라는 용어가 포함되어 있기 때문에 Atlas Search는 _id: 1
및 _id: 3
이 포함된 문서를 반환합니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 4~7자 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 mee*
와 일치시킵니다.
문서 ID | 출력 토큰 |
---|---|
|
|
|
|
englishPossessive
englishPossessive
토큰 필터는 단어에서 소유격(단어 끝의 's
)을 제거합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 englishPossessiveStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰(검색어)을 생성합니다.
EnglishPossessive 토큰 필터를 적용하여 토큰에서 소유격(후행
's
)을 제거합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
englishPossessiveStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운 메뉴에서 englishPossessive 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
englishPossessiveStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "englishPossessiveStemmer" } } }, "analyzers": [ { "name": "englishPossessiveStemmer", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "englishPossessive" } ] } ] }
다음 쿼리는 minutes 컬렉션의 title
필드에서 용어 team
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "team", "path": "title" } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 1, title: 'The team's weekly meeting' }, { _id: 2, title: 'The check-in with sales team' } ]
Atlas Search에서 title
필드에 용어 team
이 포함된 문서를 반환합니다. Atlas Search는 분석 중에 title
필드의 team's
를 토큰 team
으로 변환하기 때문에 _id: 1
로 문서를 반환합니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어와 일치시킵니다.
문서 ID | 출력 토큰 |
---|---|
|
|
|
|
flattenGraph
flattenGraph
토큰 필터는 토큰 필터 그래프를 인덱싱에 적합한 평면 형태로 변환합니다. wordDelimiterGraph 토큰 필터를 사용하는 경우, 이 필터를 wordDelimiterGraph 토큰 필터 뒤에 사용하세요.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 wordDelimiterGraphFlatten
이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
토큰에 다음 필터를 적용합니다.
wordDelimiterGraph 토큰 필터를 사용하여 하위 단어를 기준으로 토큰을 분할하고, 원래 단어에 대한 토큰을 생성하며,
SIGN_IN
단어가 구분되지 않도록 보호합니다.flattenGraph 토큰 필터를 적용하여 토큰을 단순화된 플랫 형태로 변환합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
wordDelimiterGraphFlatten
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 whitespace 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 wordDelimiterGraph 을 선택하고 토큰 필터에 대해 다음 필드를 구성합니다.
다음 필드를 선택합니다:
필드값delimiterOptions.generateWordParts
true
delimiterOptions.preserveOriginal
true
protectedWords.words
필드에SIGN_IN
을 입력합니다.protectedWords.ignoreCase
0}을 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 flattenGraph 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
wordDelimiterGraphFlatten
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "message": { "type": "string", "analyzer": "wordDelimiterGraphFlatten" } } }, "analyzers": [ { "name": "wordDelimiterGraphFlatten", "charFilters": [], "tokenizer": { "type": "whitespace" }, "tokenFilters": [ { "type": "wordDelimiterGraph", "delimiterOptions" : { "generateWordParts" : true, "preserveOriginal" : true }, "protectedWords": { "words": [ "SIGN_IN" ], "ignoreCase": false } }, { "type": "flattenGraph" } ] } ] }
다음 쿼리는 minutes 컬렉션의 message
필드에서 용어 sign
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "sign", "path": "message" } } }, { "$project": { "_id": 1, "message": 1 } } ])
[ { _id: 3, message: 'try to sign-in' } ]
문서에 title
필드에 하이픈으로 연결된 용어 sign-in
가 포함되어 있어도 Atlas Search는 쿼리 용어 sign
에 대한 결과에서 _id: 3
이 포함된 문서를 반환합니다. wordDelimiterGraph 토큰 필터는 토큰 필터 그래프를 생성하고 flattenGraph 토큰 필터는 토큰 필터 그래프를 인덱싱에 적합한 플랫한 형태로 변환합니다. 구체적으로, Atlas Search는 결과에서 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 sign
과 일치시킵니다.
문서 ID | 출력 토큰 |
|
|
icuFolding
토큰 필터는 유니코드 icuFolding
기술30 보고서의 문자 접기를 적용합니다. # 악센트 제거, 대소문자 접기, 표준 중복 접기 등 보고서에 자세히 설명된 기타 여러 기능이 있습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 diacriticFolder
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.sv_FI
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 문자열 필드에 있는 모든 용어를 단일 용어로 토큰화합니다.
icuFolding
토큰 필터를 사용하여 악센트 제거, 대소문자 접기, 표준 중복 접기 등과 같은 접기를 적용할 수 있습니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
diacriticFolder
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 keyword 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운 메뉴에서 icuFolding 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping 클릭하여 text.sv_FI중첩 필드에 적용합니다.
중첩된 text.sv_FI을 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
diacriticFolder
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "diacriticFolder", "mappings": { "fields": { "text": { "type": "document", "fields": { "sv_FI": { "analyzer": "diacriticFolder", "type": "string" } } } } }, "analyzers": [ { "name": "diacriticFolder", "charFilters": [], "tokenizer": { "type": "keyword" }, "tokenFilters": [ { "type": "icuFolding" } ] } ] }
다음 쿼리는 와일드카드 연산자를 사용하여 minutes 컬렉션의 text.sv_FI
필드에서 avdelning
을 포함하고 그 앞뒤로 다른 문자 여러 개가 포함된 용어를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "wildcard": { "query": "*avdelning*", "path": "text.sv_FI", "allowAnalyzedField": true } } }, { "$project": { "_id": 1, "text.sv_FI": 1 } } ])
[ { _id: 1, text: { sv_FI: 'Den här sidan behandlar avdelningsmöten' } }, { _id: 2, text: { sv_FI: 'Först talade chefen för försäljningsavdelningen' } } ]
Atlas Search는 _id: 1
및 _id: 2
가 있는 문서를 결과에 반환하는데, 반환하는데, 이는 문서에 avdelning
이라는 쿼리 용어가 _id: 1
이 있는 문서의 경우 용어 뒤에 다른 문자 여러 개가 이어진 형태로 포함되어 있으며 _id: 2
가 있는 문서의 경우 용어의 앞뒤로 다른 문자 여러 개가 있는 형태로 포함되어 있기 때문입니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰을 생성한 다음 쿼리 용어 *avdelning*
과 일치시킵니다.
문서 ID | 출력 토큰 |
---|---|
|
|
|
|
icuNormalizer
토큰 필터는 icuNormalizer
표준 유니코드 정규화 모드를사용하여 토큰을 정규화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | no | 적용할 정규화 형식입니다. 허용되는 값은 다음과 같습니다.
지원되는 정규화 형식에 대해 자세히 알아보려면 1.2: 정규화 형식, UTR#15 섹션을 참조하세요. 기본값: |
예시
다음 인덱스 정의는 textNormalizer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 사용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성할 수 있습니다.
icuNormalizer
토큰 필터를 사용하여 호환성 분해로 토큰을 정규화한 다음 표준 구성으로 토큰을 정규화하세요.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
textNormalizer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 whitespace 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 icuNormalizer 을 선택하고 normalizationForm 드롭다운에서
nfkc
을 선택합니다.사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
textNormalizer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "textNormalizer", "mappings": { "fields": { "message": { "type": "string", "analyzer": "textNormalizer" } } }, "analyzers": [ { "name": "textNormalizer", "charFilters": [], "tokenizer": { "type": "whitespace" }, "tokenFilters": [ { "type": "icuNormalizer", "normalizationForm": "nfkc" } ] } ] }
다음 쿼리는 minutes 컬렉션의 message
필드에서 용어 1
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "1", "path": "message" } } }, { "$project": { "_id": 1, "message": 1 } } ])
[ { _id: 2, message: 'do not forget to SIGN-IN. See ① for details.' } ]
Atlas Search는 문서의 message
필드에 원으로 표시된 숫자 ①
이 포함되어 있어도 쿼리 용어 1
에 대한 결과에서 _id: 2
가 있는 문서를 반환하는데, 이는 icuNormalizer
토큰 필터가 nfkc
정규화 형식을 사용하여 이 문자에 대한 토큰 1
을 생성하기 때문입니다. 다음 표는 Atlas Search가 nfkc
정규화 형식을 사용하여 결과에서 문서에 대해 생성하는 토큰(검색 가능한 용어)과 다른 정규화 형식에 대해 생성하는 토큰을 비교하여 보여 줍니다.
정규화 형식 | 출력 토큰 | 경기 |
|
| X |
|
| X |
|
| √ |
|
| √ |
kStemming
kStemming
토큰 필터는 어간 처리 알고리즘과 내장된 영어 사전을 조합하여 단어의 어간을 처리합니다. 소문자 텍스트를 사용하며 대문자 텍스트는 수정하지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 kStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.en_US
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
kStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 kStemming 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 text.en_US 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.en_US을 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
kStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "kStemmer", "mappings": { "dynamic": true }, "analyzers": [ { "name": "kStemmer", "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "lowercase" }, { "type": "kStemming" } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.en_US
필드에서 용어 Meeting
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "Meeting", "path": "text.en_US" } } }, { "$project": { "_id": 1, "text.en_US": 1 } } ])
[ { _id: 1, text: { en_US: '<head> This page deals with department meetings. </head>' } } ]
Atlas Search는 소문자로 된 복수형 용어 meetings
를 포함하는 _id: 1
가 있는 문서를 반환합니다. 소문자 토큰 필터는 토큰 텍스트를Atlas Search 소문자로 정규화하고, kStemming 토큰 필터는 문서의 필드에 있는 복수형 Atlas Search meetings
을(를) 단수형 text.en_US
쿼리 용어와 일치시키기 때문에 는 쿼리 용어를 문서와 일치시킵니다. 또한 Atlas Search는 인덱스 분석기를 사용하여(또는 지정된 경우 searchAnalyzer
을 사용하여) 쿼리 용어를 분석합니다. 구체적으로, Atlas Search는 결과에서 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 이를 쿼리 용어와 일치시키는 데 사용합니다.
head
, this
, page
, deal
, with
, department
, meeting
, head
분량
length
토큰 필터는 너무 짧거나 너무 긴 토큰을 제거합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | no | 토큰의 최소 길이를 지정하는 숫자입니다. 값은 기본값: |
| integer | no | 토큰의 최대 길이를 지정하는 숫자입니다. 값은 기본값: |
예시
다음 인덱스 정의는 longOnly
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.sv_FI
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 사용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
icuFolding 토큰 필터를 사용하여 문자 접기를 적용합니다.
length
토큰화 후 UTF-16 코드 단위가 20개 이상인 토큰만 인덱싱하는 토큰 필터입니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
longOnly
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 icuFolding을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 length 을 선택하고 토큰 필터에 대해 다음 필드를 구성합니다:
필드값min
20
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 text.sv.FI 중첩 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 중첩된 text.sv.FI를 선택하고 Field Name Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
longOnly
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "text": { "type": "document", "dynamic": true, "fields": { "sv_FI": { "type": "string", "analyzer": "longOnly" } } } } }, "analyzers": [ { "name": "longOnly", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "icuFolding" }, { "type": "length", "min": 20 } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.sv_FI
필드에서 용어 forsaljningsavdelningen
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "forsaljningsavdelningen", "path": "text.sv_FI" } } }, { "$project": { "_id": 1, "text.sv_FI": 1 } } ])
[ { _id: 2, text: { sv_FI: 'Först talade chefen för försäljningsavdelningen' } } ]
Atlas Search는 _id: 2
가 있는 문서를 반환하며, 여기에는 용어 försäljningsavdelningen
이 포함되어 있습니다. 용어가 20자를 초과하기 때문에 Atlas Search는 문서를 쿼리 용어와 일치시킵니다. 또한 쿼리 용어 forsaljningsavdelningen
에 분음 부호 문자가 포함되어 있지 않지만 Atlas Search는 문서의 원래 용어에 있는 분음 부호를 접어서 쿼리 용어를 문서와 일치시킵니다. 구체적으로, Atlas Search는 _id: 2
가 있는 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성합니다.
forsaljningsavdelningen
컬렉션의 text.sv_FI
필드에 있는 다른 모든 용어가 20자 미만이므로 Atlas Search는 컬렉션의 다른 용어에 대한 검색 결과를 반환하지 않습니다.
소문자
lowercase
토큰 필터는 토큰 텍스트를 소문자로 정규화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의 예시에서는 회의록 collection의 title
필드를 nGram
토큰화 전략을 사용하여 자동 완성 유형으로 인덱싱합니다. title
필드에 keywordLowerer
이라는 사용자 지정 분석기를 적용합니다. 사용자 지정 분석기는 다음을 지정합니다:
키워드 토크나이저를 적용하여 문자열 또는 문자열 배열에 대한 단일 토큰을 생성합니다.
lowercase
토큰 필터를 적용하여 토큰 텍스트를 소문자로 변환합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
keywordLowerer
을 입력합니다.Tokenizer이 접혀 있으면 펼친 다음 드롭다운에서 keyword을 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name드롭다운에서 제목을 선택하고 Data Type드롭다운에서 자동 완성을 선택합니다.
데이터 유형의 속성 섹션에 있는 속성 드롭다운에서 다음 값을 선택합니다.
속성 이름값Analyzer
keywordLowerer
Tokenization
nGram
Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "fields": { "title": { "analyzer": "keywordLowerer", "tokenization": "nGram", "type": "autocomplete" } } }, "analyzers": [ { "name": "keywordLowerer", "charFilters": [], "tokenizer": { "type": "keyword" }, "tokenFilters": [ { "type": "lowercase" } ] } ] }
다음 쿼리는 자동 완성 연산자를 사용하여 title
필드에서 문자 standup
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "autocomplete": { "query": "standup", "path": "title" } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 4, title: 'The daily huddle on tHe StandUpApp2' } ]
Atlas Search는 문서에 쿼리 용어 standup
가 포함되어 있으므로 결과에 _id: 4
이 포함된 문서를 반환합니다. Atlas Search는 자동 완성 유형에 대해 keyword
토크나이저, lowercase
토큰 필터 및 nGram
토큰화 전략을 사용하여 title
필드에 대한 토큰을 생성합니다. 구체적으로, Atlas Search는 keyword
토크나이저를 사용하여 전체 문자열을 단일 토큰으로 토큰화합니다. 이 토큰은 전체 문자열에서 정확히 일치하는 항목만 지원합니다. 그런 다음 lowercase
토큰 필터를 사용하여 토큰을 소문자로 변환합니다. 결과의 문서에 대해 Atlas Search는 사용자 지정 분석기를 사용하여 다음 토큰을 생성합니다.
문서 ID | 출력 토큰 |
|
|
사용자 지정 분석기를 적용한 후 Atlas Search는 인덱스 정의에 지정된 대로 title
필드를 자동 완성 유형으로 인덱싱하기 때문에 n-그램의 토큰을 추가로 생성합니다. Atlas Search는 standup
을 위한 토큰이 포함된 n-gram 토큰을 사용하여 문서를 standup
쿼리 용어와 일치시킵니다.
다음 인덱스 정의는 lowerCaser
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 분리 규칙에 따라 토큰을 생성합니다.
토큰에 다음 필터를 적용합니다.
icuNormalizer는 표준 유니코드 정규화 모드를 사용하여 토큰을 정규화합니다.
lowercase
토큰 텍스트를 소문자로 변환하는 토큰 필터.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
lowerCaser
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 icuNormalizer 을 선택한 다음 normalizationForm 드롭다운에서
nfkd
을 선택합니다.사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 lowercase 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
lowerCaser
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
{ "mappings": { "fields": { "message": { "type": "string", "analyzer": "lowerCaser" } } }, "analyzers": [ { "name": "lowerCaser", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "icuNormalizer", "normalizationForm": "nfkd" }, { "type": "lowercase" } ] } ] }
다음 쿼리는 message
필드에서 sign-in
라는 용어를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "sign-in", "path": "message" } } }, { "$project": { "_id": 1, "message": 1 } } ])
[ { _id: 1, message: 'try to siGn-In' }, { _id: 3, message: 'try to sign-in' }, { _id: 2, message: 'do not forget to SIGN-IN. See ① for details.' } ]
Atlas Search는 쿼리 용어 sign-in
에 대한 결과에서 _id: 1
, _id: 3
, _id:
2
가 포함된 문서를 반환합니다. 이는 icuNormalizer
토크나이저가 먼저 하이픈으로 연결된 단어를 포함한 텍스트를 분할하여 별도의 토큰을 생성하지만 문서의 원래 대소문자를 유지하고, 이후에 lowercase
토큰 필터가 토큰을 소문자로 변환하기 때문입니다. 또한 Atlas Search는 인덱스 분석기(또는 지정된 경우 searchAnalyzer
사용)로 쿼리 용어를 분석하여 쿼리 용어를 분할하고 문서와 일치시킵니다.
정규화 형식 | 출력 토큰 |
|
|
|
|
|
|
nGram
nGram
토큰 필터는 입력을 구성된 크기의 n-그램으로 토큰화합니다. 동의어 또는 자동 완성 매핑 정의에는 nGram 토큰 필터를 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | 네 | 생성되는 n-그램의 최소 길이를 지정하는 숫자입니다. 값은 |
| integer | 네 | 생성되는 n-그램의 최대 길이를 지정하는 숫자입니다. 값은 |
| 문자열 | no | 토큰을
기본값: |
예시
다음 인덱스 정의는 titleAutocomplete
이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기 함수는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성합니다.
토큰에 일련의 토큰 필터를 적용합니다.
englishPossessive
을(를) 사용하여 단어에서 소유격(단어 끝의's
)을 제거합니다.nGram
을(를) 사용하여 단어를 4~7자 길이로 토큰화합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
titleAutocomplete
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 englishPossessive을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 nGram 을 선택하고 토큰 필터에 대해 다음 필드를 구성합니다:
필드값minGram
4
maxGram
7
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
titleAutocomplete
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "titleAutocomplete" } } }, "analyzers": [ { "name": "titleAutocomplete", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "englishPossessive" }, { "type": "nGram", "minGram": 4, "maxGram": 7 } ] } ] }
다음 쿼리는 와일드카드 연산자를 사용하여 minutes 컬렉션의 title
필드에서 용어 meet
과 해당 용어 뒤로 다른 문자 여러 개가 이어지는 용어를 모두 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "wildcard": { "query": "meet*", "path": "title", "allowAnalyzedField": true } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 1, title: 'The team's weekly meeting' }, { _id: 3, title: 'The regular board meeting' } ]
Atlas Search는 문서가 meeting
이라는 용어를 포함하고 있기 때문에 _id: 1
및 _id: 3
이 있는 문서를 반환합니다. 이 용어는 Atlas Search가 쿼리 기준 meet*
과 일치시키며, 다음과 같은 토큰들(검색 가능한 용어들)을 생성함으로써 매치됩니다
정규화 형식 | 출력 토큰 |
---|---|
|
|
|
|
참고
termNotInBounds
매개 변수는 기본적으로 omit
로 설정되어 있기 때문에 4자 미만(예: the
) 및 7자 이상의 용어에 대한 토큰은 Atlas Search에서 생성되지 않습니다. termNotInBounds
매개 변수 값을 include
로 설정하면 Atlas Search는 the
라는 용어에 대한 토큰도 생성합니다.
porterStemming
porterStemming
토큰 필터는 포터 어간 처리 알고리즘을 사용하여 영어 단어에서 일반적인 어간 및 굴절 접미사를 제거합니다. 소문자 텍스트가 처리되며 대문자 텍스트는 처리되지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 porterStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터: 단어를 소문자로 변환합니다.
porterStemming 토큰 필터: 단어에서 일반적인 형태소 및 굴절 접미사를 제거합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
porterStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 porterStemming 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
porterStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "porterStemmer" } } }, "analyzers": [ { "name": "porterStemmer", "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "lowercase" }, { "type": "porterStemming" } ] } ] }
다음 쿼리는 minutes 컬렉션의 title
필드에서 용어 Meet
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "Meet", "path": "title" } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 1, title: 'The team's weekly meeting' }, { _id: 3, title: 'The regular board meeting' } ]
소문자 _id: 1
_id: 3
토큰 필터가 토큰 텍스트를 소문자로 정규화한 다음 토큰 필터가 토큰에서 porterStemming
형태소 접미사를 제거하여 토큰을 생성하기 때문에 Atlas Search는 및 이 포함된 문서를 meeting
meet
반환합니다. Atlas Search는 쿼리 Meet
용어 과 일치합니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 Meet
와 일치시킵니다.
정규화 형식 | 출력 토큰 |
---|---|
|
|
|
|
정규식
regex
토큰 필터는 각 토큰에 정규 표현식을 적용하여 일치하는 항목을 지정된 문자열로 바꿉니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 문자열 | 네 | 사람이 읽을 수 있는 레이블로 이 토큰 필터를 식별합니다. 값은 | |||||||||||||||||||||
| 문자열 | 네 | 각 토큰에 적용할 표현식 패턴입니다. | |||||||||||||||||||||
| 문자열 | 네 | 일치하는 패턴이 발생할 때마다 대체할 대체 문자열입니다. 토큰을 무시하거나 삭제 하기 위해 빈 문자열( )을 지정하면 Atlas Search 는 대신 빈 문자열이 포함된 토큰을 생성합니다. 빈 문자열이 있는
| |||||||||||||||||||||
| 문자열 | 네 | 허용되는 값은 다음과 같습니다.
|
예시
다음 인덱스 정의는 emailRedact
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.email
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 필드 값의 모든 단어를 단일 용어로 인덱싱합니다.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 토큰의 대문자를 소문자로 바꿀 수 있습니다.
regex
토큰 필터를 사용하여 토큰에서 이메일 주소처럼 보이는 문자열을 찾아redacted
라는 단어로 바꿉니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
emailRedact
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 keyword 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 regex 선택하고 토큰 필터에 대해 다음을 구성합니다.
pattern 필드에
^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,5})$
을 입력합니다.replacement 필드에
redacted
을 입력합니다.matches 드롭다운 메뉴에서
all
을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 중첩 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 중첩된 page_updated_by.email을 선택하고 Data Type드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
emailRedact
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "lucene.standard", "mappings": { "dynamic": false, "fields": { "page_updated_by": { "type": "document", "fields": { "email": { "type": "string", "analyzer": "emailRedact" } } } } }, "analyzers": [ { "charFilters": [], "name": "emailRedact", "tokenizer": { "type": "keyword" }, "tokenFilters": [ { "type": "lowercase" }, { "matches": "all", "pattern": "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,5})$", "replacement": "redacted", "type": "regex" } ] } ] }
다음 쿼리는 와일드카드 연산자를 사용하여 minutes 컬렉션의 page_updated_by.email
필드에서 용어 앞으로 다른 문자 여러 개가 붙어 있는 용어 example.com
을 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "index": "default", 5 "wildcard": { 6 "query": "*example.com", 7 "path": "page_updated_by.email", 8 "allowAnalyzedField": true 9 } 10 } 11 }, 12 { 13 "$project": { 14 "_id": 1, 15 "page_updated_by.email": 1 16 } 17 } 18 ])
page_updated_by.email
필드의 이메일 주소에 example.com
이라는 단어가 포함되어 있더라도 Atlas Search는 쿼리에 대한 결과를 반환하지 않습니다. Atlas Search는 사용자 지정 분석기에 제공된 정규 표현식에 단어 redacted
와 일치하는 문자열을 토큰화하므로 쿼리 용어를 어떤 문서와도 일치시키지 않습니다.
reverse
reverse
토큰 필터는 각 문자열 토큰을 반전시킵니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 사람이 읽을 수 있는 레이블로 이 토큰 필터를 식별합니다. 값은 |
예시
다음 인덱스 정의는 keywordReverse
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.email
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 전체 문자열을 단일 용어로 토큰화합니다.
reverse
토큰 필터를 적용하여 문자열 토큰을 반전시킵니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
keywordReverse
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 keyword 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운 메뉴에서 reverse 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 중첩 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 중첩된 page_updated_by.email을 선택하고 Data Type드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
keywordReverse
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "lucene.keyword", "mappings": { "dynamic": }, "analyzers": [ { "name": "keywordReverse", "charFilters": [], "tokenizer": { "type": "keyword" }, "tokenFilters": [ { "type": "reverse" } ] } ] }
다음 쿼리는 와일드카드 연산자를 사용하여 minutes 컬렉션의 page_updated_by.email
필드를 검색하여 @example.com
문자 앞의 모든 문자를 역순으로 일치시킵니다. reverse
토큰 필터를 사용하면 선행 와일드카드 쿼리의 속도를 높일 수 있습니다.
db.minutes.aggregate([ { "$search": { "index": "default", "wildcard": { "query": "*@example.com", "path": "page_updated_by.email", "allowAnalyzedField": true } } }, { "$project": { "_id": 1, "page_updated_by.email": 1, } } ])
선행 쿼리의 경우, Atlas Search는 와일드카드 쿼리에 사용자 지정 분석기를 적용하여 다음과 같이 쿼리를 변환합니다.
moc.elpmaxe@*
그런 다음 Atlas Search는 인덱싱된 토큰에 대해 쿼리를 실행하며, 이 토큰도 역방향으로 변환됩니다. 이 쿼리는 다음 문서를 반환합니다.
[ { _id: 1, page_updated_by: { email: 'auerbach@example.com' } }, { _id: 2, page_updated_by: { email: 'ohrback@example.com' } }, { _id: 3, page_updated_by: { email: 'lewinsky@example.com' } }, { _id: 4, page_updated_by: { email: 'levinski@example.com' } } ]
구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 moc.elpmaxe@*
과 일치시킵니다.
정규화 형식 | 출력 토큰 |
---|---|
|
|
|
|
|
|
|
|
싱글
shingle
토큰 필터는 일련의 토큰에서 싱글(토큰 n-그램)을 구성합니다. 동의어 또는 자동 완성 매핑 정의에는 shingle
토큰 필터를 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | 네 | 싱글당 최소 토큰 수입니다. |
| integer | 네 | 싱글당 최대 토큰 수입니다. 값은 |
예시
minutes 컬렉션의 page_updated_by.email
필드에 대한 다음 인덱스 정의 예시에서는 두 개의 사용자 지정 분석기 emailAutocompleteIndex
및 emailAutocompleteSearch
를 사용하여 자동 완성과 유사한 기능을 구현합니다. Atlas Search는 인덱스 생성 중에 emailAutocompleteIndex
분석기를 사용하여 다음을 수행합니다.
Atlas Search는 검색 중에 emailAutocompleteSearch
분석기를 사용하여 다음을 수행합니다.
필드에서
@
문자를AT
로 바꾸기공백 토크나이저를 사용하여 토큰 생성
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
emailAutocompleteIndex
을 입력합니다.Character Filters을(를) 확장하고 Add character filter을(를) 클릭합니다.
드롭다운에서 mapping을(를) 선택하고 을(를) 클릭하세요.
다음 키와 값을 입력합니다:
키값@
AT
사용자 지정 분석기에 문자 필터를 추가하려면 Add character filter 을 클릭합니다.
접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 whitespace 을 선택하고 maxTokenLength 필드에
15
을 입력합니다.Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 shingle 을 선택하고 다음 필드를 구성합니다.
필드필드 값minShingleSize
2
minShingleSize
3
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 edgeGram 을 선택하고 토큰 필터에 대해 다음 필드를 구성합니다:
필드필드 값minGram
2
maxGram
15
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
emailAutocompleteSearch
을 입력합니다.Character Filters을(를) 확장하고 Add character filter을(를) 클릭합니다.
드롭다운에서 mapping을(를) 선택하고 을(를) 클릭하세요.
다음 키와 값을 입력합니다:
키값@
AT
사용자 지정 분석기에 문자 필터를 추가하려면 Add character filter 을 클릭합니다.
접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 whitespace 을 선택하고 maxTokenLength 필드에
15
을 입력합니다.인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 중첩 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 중첩된 page_updated_by.email을 선택하고 Data Type드롭다운에서 문자열을 선택합니다.
데이터 유형에 대한 속성 섹션의 Index Analyzer 드롭다운에서
emailAutocompleteIndex
선택하고 Search Analyzer 드롭다운에서emailAutocompleteSearch
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
1 { 2 "analyzer": "lucene.keyword", 3 "mappings": { 4 "dynamic": true, 5 "fields": { 6 "page_updated_by": { 7 "type": "document", 8 "fields": { 9 "email": { 10 "type": "string", 11 "analyzer": "emailAutocompleteIndex", 12 "searchAnalyzer": "emailAutocompleteSearch" 13 } 14 } 15 } 16 } 17 }, 18 "analyzers": [ 19 { 20 "name": "emailAutocompleteIndex", 21 "charFilters": [ 22 { 23 "mappings": { 24 "@": "AT" 25 }, 26 "type": "mapping" 27 } 28 ], 29 "tokenizer": { 30 "maxTokenLength": 15, 31 "type": "whitespace" 32 }, 33 "tokenFilters": [ 34 { 35 "maxShingleSize": 3, 36 **** "minShingleSize": 2, 37 "type": "shingle" 38 }, 39 { 40 "maxGram": 15, 41 "minGram": 2, 42 "type": "edgeGram" 43 } 44 ] 45 }, 46 { 47 "name": "emailAutocompleteSearch", 48 "charFilters": [ 49 { 50 "mappings": { 51 "@": "AT" 52 }, 53 "type": "mapping" 54 } 55 ], 56 "tokenizer": { 57 "maxTokenLength": 15, 58 "type": "whitespace" 59 } 60 } 61 ] 62 }
다음 쿼리는 minutes 컬렉션의 page_updated_by.email
필드에서 이메일 주소를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "auerbach@ex", "path": "page_updated_by.email" } } }, { "$project": { "_id": 1, "page_updated_by.email": 1 } } ])
[ { _id: 1, page_updated_by: { email: 'auerbach@example.com' } } ]
Atlas Search는 emailAutocompleteSearch
분석기를 사용하여 검색 토큰을 생성한 다음 emailAutocompleteIndex
분석기를 사용하여 생성한 인덱스 토큰과 일치시킵니다. 다음 표는 Atlas Search에서 생성하는 검색 및 인덱스 토큰(최대 15자)을 보여줍니다.
토큰 검색 | Index Tokens |
---|---|
|
|
snowballStemming
snowballStemming
토큰은 Snowball에서 생성된 어간 처리기를 사용하여 Stems 토큰을 필터링합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | 네 | 유효한 값은 다음과 같습니다.
|
예시
다음 인덱스 정의는 frenchStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.fr_CA
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 토큰을 소문자로 변환합니다.
french
어간 단어에 대한snowballStemming
토큰 필터의 변형입니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
frenchStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 snowballStemming 을 선택한 다음 stemmerName 드롭다운에서
french
을 선택합니다.사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping 을 클릭하여 text.fr_CA 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.fr_CA를 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
frenchStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "text": { "type": "document", "fields": { "fr_CA": { "type": "string", "analyzer": "frenchStemmer" } } } } }, "analyzers": [ { "name": "frenchStemmer", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "lowercase" }, { "type": "snowballStemming", "stemmerName": "french" } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.fr_CA
필드에서 용어 réunion
을 검색합니다.
db.minutes.aggregate([ { "$search": { "text": { "query": "réunion", "path": "text.fr_CA" } } }, { "$project": { "_id": 1, "text.fr_CA": 1 } } ])
[ { _id: 1, text: { fr_CA: 'Cette page traite des réunions de département' } } ]
Atlas Search는 _id: 1
이 포함된 문서를 결과로 반환합니다. Atlas Search는 문서에 대해 다음 토큰을 생성한 다음 이를 사용하여 쿼리 용어 réunion
과 일치시키기 때문에 쿼리 용어를 문서와 일치시킵니다.
문서 ID | 출력 토큰 |
---|---|
|
|
spanishPluralStemming
spanishPluralStemming
토큰 필터는 스페인어 복수형 단어의 어간을 처리합니다. 소문자 텍스트를 사용합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 spanishPluralStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.es_MX
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 스페인어 용어를 소문자로 변환합니다.
spanishPluralStemming
토큰 필터를 사용하여 토큰의 복수형 스페인어 단어를 단수형으로 변환합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
spanishPluralStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 spanishPluralStemming 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 text.es_MX 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.es_MX를 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
spanishPluralStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "spanishPluralStemmer", "mappings": { "fields": { "text: { "type": "document", "fields": { "es_MX": { "analyzer": "spanishPluralStemmer", "searchAnalyzer": "spanishPluralStemmer", "type": "string" } } } } }, "analyzers": [ { "name": "spanishPluralStemmer", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "lowercase" }, { "type": "spanishPluralStemming" } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.es_MX
필드에서 스페인어 용어 punto
를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "punto", "path": "text.es_MX" } } }, { "$project": { "_id": 1, "text.es_MX": 1 } } ])
[ { _id: 4, text : { es_MX: 'La página ha sido actualizada con los puntos de la agenda.', } } ]
문서의 text.es_MX
필드에 복수형 용어 puntos
가 포함되어 있기 때문에 Atlas Search는 _id: 4
가 포함된 문서를 반환합니다. Atlas Search는 이 용어에서 복수형(s
)을 어간으로 하여 puntos
를 punto
로 분석하므로 이 문서를 쿼리 용어 punto
에 대해 일치시킵니다. 구체적으로, Atlas Search는 결과에서 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 이를 쿼리 용어와 일치시키는 데 사용합니다.
문서 ID | 출력 토큰 |
|
|
stempel
stempel
토큰 필터는 Lucene의 기본 폴란드어 어간 처리 테이블을 사용하여 폴란드어로 된 단어의 어간을 처리합니다. 소문자 텍스트를 사용합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 stempelStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.pl_PL
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
stempelStemmer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운 메뉴에서 stempel 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping를 클릭하여 Text.pl_pl중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.pl_PL을 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
stempelStemmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "analyzer": "stempelStemmer", "mappings": { "dynamic": true, "fields": { "text.pl_PL": { "analyzer": "stempelStemmer", "searchAnalyzer": "stempelStemmer", "type": "string" } } }, "analyzers": [ { "name": "stempelStemmer", "charFilters": [], "tokenizer": { "type": "standard" }, "tokenFilters": [ { "type": "lowercase" }, { "type": "stempel" } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.pl_PL
필드에서 폴란드어 용어 punkt
를 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "punkt", "path": "text.pl_PL" } } }, { "$project": { "_id": 1, "text.pl_PL": 1 } } ])
[ { _id: 4, text: { pl_PL: 'Strona została zaktualizowana o punkty porządku obrad.' } } ]
문서의 text.pl_PL
필드에 복수형 용어 punkty
가 포함되어 있기 때문에 Atlas Search는 _id: 4
가 포함된 문서를 반환합니다. Atlas Search는 이 용어에서 복수형(y
)을 어간으로 하여 punkty
를 punkt
로 분석하므로 이 문서를 쿼리 용어 punkt
에 대해 일치시킵니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어와 일치시킵니다.
문서 ID | 출력 토큰 |
---|---|
|
|
중지 단어
stopword
토큰 필터는 지정된 중지 단어에 해당하는 토큰을 제거합니다. 이 토큰 필터는 지정된 중지 단어를 분석하지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 배열 | 네 | 제거할 토큰에 해당하는 중지 단어가 포함된 목록입니다. 값은 하나 이상의 중지 단어여야 합니다. |
| 부울 | no | 제거할 토큰을 필터링할 때 중지 단어의 대소문자를 무시할지 여부를 나타내는 플래그입니다. 값은 다음 중 하나일 수 있습니다.
기본값: |
예시
다음 인덱스 정의는 stopwordRemover
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
stopword
토큰 필터를 적용하여 정의된 중지 단어is
,the
및at
과 일치하는 토큰을 제거합니다. 토큰 필터는 대소문자를 구분하지 않으며 지정된 중지 단어와 일치하는 모든 토큰을 제거합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
stopwordRemover
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 whitespace 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 stopword 선택하고 tokens 필드에 다음을 입력합니다.
is
,the
,at
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 text.en_US 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.en_US을 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
stopwordRemover
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "text": { "type" : "document", "fields": { "en_US": { "type": "string", "analyzer": "stopwordRemover" } } } } }, "analyzers": [ { "name": "stopwordRemover", "charFilters": [], "tokenizer": { "type": "whitespace" }, "tokenFilters": [ { "type": "stopword", "tokens": ["is", "the", "at"] } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.en_US
필드에서 head of the sales
구문을 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "query": "head of the sales", 6 "path": "text.en_US" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "text.en_US": 1 14 } 15 } 16 ])
1 [ 2 { 3 _id: 2, 4 text: { en_US: 'The head of the sales department spoke first.' } 5 } 6 ]
Atlas Search는 en_US
필드에 검색어가 포함되어 있기 때문에 _id: 2
가 포함된 문서를 반환합니다. Atlas Search는 분석 중에 문서에서 the
라는 단어에 대한 토큰을 생성하지 않지만, string
필드의 경우 인덱스 분석기를 사용하여(또는 지정된 경우 searchAnalyzer
를 사용하여) 쿼리 용어를 분석하고 쿼리 용어에서 중지 단어를 제거하기 때문에 여전히 쿼리 용어와 일치시킬 수 있으며, 이를 통해 문서에 쿼리 용어를 일치시킬 수 있습니다. 구체적으로, Atlas Search는 결과에서 문서에 대해 다음과 같은 토큰을 생성합니다.
문서 ID | 출력 토큰 |
---|---|
|
|
트림
trim
토큰 필터는 토큰에서 선행 및 후행 공백을 잘라냅니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 tokenTrimmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.en_US
를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
htmlStrip 문자 필터를 적용하여
a
태그 외의 모든 HTML 태그를 텍스트에서 제거합니다.키워드 토크나이저를 적용하여 전체 문자열에 대한 단일 토큰을 생성합니다.
trim
토큰 필터를 적용하여 토큰의 선행 및 후행 공백을 제거합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
tokenTrimmer
을 입력합니다.Character Filters을(를) 확장하고 Add character filter을(를) 클릭합니다.
드롭다운에서 htmlStrip 을 선택하고 ignoredTags 필드에
a
을 입력합니다.사용자 지정 분석기에 문자 필터를 추가하려면 Add character filter 을 클릭합니다.
접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 keyword 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운 메뉴에서 trim 을(를) 선택합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 text.en_US 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 text.en_US을 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
tokenTrimmer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "text": { "type": "document", "fields": { "en_US": { "type": "string", "analyzer": "tokenTrimmer" } } } } }, "analyzers": [ { "name": "tokenTrimmer", "charFilters": [{ "type": "htmlStrip", "ignoredTags": ["a"] }], "tokenizer": { "type": "keyword" }, "tokenFilters": [ { "type": "trim" } ] } ] }
다음 쿼리는 minutes 컬렉션의 text.en_US
필드에서 *department meetings*
를 포함하고 그 앞뒤로 다른 문자 여러 개가 포함된 용어를 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "wildcard": { 5 "query": "*department meetings*", 6 "path": "text.en_US", 7 "allowAnalyzedField": true 8 } 9 } 10 }, 11 { 12 "$project": { 13 "_id": 1, 14 "text.en_US": 1 15 } 16 } 17 ])
1 [ 2 { 3 _id: 1, 4 text: { en_US: '<head> This page deals with department meetings. </head>' } 5 } 6 ]
Atlas Search는 en_US
필드에 쿼리 용어 department meetings
가 포함되어 있기 때문에 _id: 1
이 포함된 문서를 반환합니다. 결과에서 문서에 대해 다음과 같은 토큰이 생성되며, 이는 Atlas Search가 HTML 태그를 제거하고 전체 문자열에 대해 단일 토큰을 생성했으며 토큰의 선행 및 후행 공백을 제거했음을 보여줍니다.
문서 ID | 출력 토큰 |
---|---|
|
|
wordDelimiterGraph
wordDelimiterGraph
토큰 필터는 구성된 규칙에 따라 토큰을 하위 토큰으로 분할합니다. 표준 토크나이저는 이 토큰 필터가 경계를 결정하는 데 사용하는 많은 단어 내 구분 기호를 제거하므로 이 토큰 필터를 표준 토크나이저와 함께 사용하지 않는 것이 좋습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 |
| 객체 | no | 단어를 하위 단어로 분할하는 방법을 결정하는 규칙이 포함된 객체입니다. 기본값: |
delimiterOptions .generateWordParts | 부울 | no | 하위 단어를 기준으로 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .generateNumberParts | 부울 | no | 하위 번호를 기준으로 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateWords | 부울 | no | 하위 단어의 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateNumbers | 부울 | no | 하위 번호의 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateAll | 부울 | no | 모든 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .preserveOriginal | 부울 | no | 원래 단어의 토큰을 생성할지 여부를 나타내는 플래그입니다. 기본값: |
delimiterOptions .splitOnCaseChange | 부울 | no | 대소문자 전환에 따라 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .splitOnNumerics | 부울 | no | 문자-숫자 전환에 따라 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .stemEnglishPossessive | 부울 | no | 각 하위 단어에서 후행 소유격을 제거할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .ignoreKeywords | 부울 | no |
기본값: |
| 객체 | no | 보호된 단어에 대한 옵션이 포함된 객체입니다. 기본값: |
protectedWords .words | 배열 | 조건부 | 구분되지 않도록 보호할 토큰이 포함된 목록입니다. |
protectedWords .ignoreCase | 부울 | no | 보호된 단어의 대소문자 구분을 무시할지 여부를 나타내는 플래그입니다. 기본값: |
true
인 경우, 이 옵션 뒤에 flattenGraph 토큰 필터를 적용하여 토큰 스트림을 인덱싱에 적합하게 만듭니다.
예시
다음 인덱스 정의는 wordDelimiterGraphAnalyzer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
다음에 wordDelimiterGraph 토큰 필터를 적용합니다.
is
,the
,at
를 분할하려고 하지 마세요. 제외는 대소문자를 구분합니다. 예를 들어Is
및tHe
는 제외되지 않습니다.대소문자 변경 시 토큰을 분할하고 영어 알파벳에서 알파벳만 포함된 토큰을 제거합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
wordDelimiterGraphAnalyzer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 whitespace 을(를) 선택합니다.
Token Filters을(를) 확장하고 Add token filter을(를) 클릭합니다.
드롭다운에서 lowercase을(를) 선택하고 Add token filter을(를) 클릭하여 사용자 지정 분석기에 토큰 필터를 추가합니다.
Add token filter을 클릭하여 다른 토큰 필터를 추가합니다.
드롭다운에서 wordDelimiterGraph 을 선택하고 다음 필드를 구성합니다:
delimiterOptions.generateWordParts 을 선택 취소하고 delimiterOptions.splitOnCaseChange 을 선택합니다.
protectedWords.words
필드에is
,the
및at
단어를 한 번에 하나씩 입력한 다음 드롭다운에서 선택합니다.protectedWords.ignoreCase
을(를) 선택 취소합니다.
사용자 지정 분석기에 토큰 필터를 추가하려면 Add token filter 을 클릭합니다.
사용자 지정 분석기를 만들려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping 를 클릭하여 제목 중첩 필드에 사용자 지정 분석기를 적용합니다.
중첩된 title를 Field Name 드롭다운에서, Data Type 드롭다운의 문자열과 함께 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
wordDelimiterGraphAnalyzer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음 예시로 교체합니다.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "wordDelimiterGraphAnalyzer" } } }, "analyzers": [ { "name": "wordDelimiterGraphAnalyzer", "charFilters": [], "tokenizer": { "type": "whitespace" }, "tokenFilters": [ { "type": "wordDelimiterGraph", "protectedWords": { "words": ["is", "the", "at"], "ignoreCase": false }, "delimiterOptions" : { "generateWordParts" : false, "splitOnCaseChange" : true } } ] } ] }
다음 쿼리는 minutes 컬렉션의 title
필드에서 용어 App2
을 검색합니다.
db.minutes.aggregate([ { "$search": { "index": "default", "text": { "query": "App2", "path": "title" } } }, { "$project": { "_id": 1, "title": 1 } } ])
[ { _id: 4, title: 'The daily huddle on tHe StandUpApp2' } ]
문서의 title
필드에 App2
가 포함되어 있기 때문에 Atlas Search는 _id: 4
가 포함된 문서를 반환합니다. Atlas Search는 대소문자 변경 시 토큰을 분할하고 분할에 의해 생성된 토큰 중 알파벳 문자만 포함된 토큰을 제거합니다. 또한 인덱스 분석기를 사용하여(또는 지정된 경우 searchAnalyzer
을 사용하여) 쿼리 용어를 분석해 대소문자 변경 시 단어를 분할하고 2
앞의 문자를 제거합니다. 구체적으로, Atlas Search는 protectedWords
및 delimiterOptions
옵션에 대해 _id : 4
가 포함된 문서에 대해 다음과 같은 토큰을 생성합니다.
wordDelimiterGraph 옵션 | 출력 토큰 |
---|---|
|
|
|
|