문서 홈 → MongoDB 실행 및 관리 → MongoDB Atlas
토큰 필터
이 페이지의 내용
토큰 필터는 다음과 같은 작업을 수행합니다.
어간 처리: "talking", "talked", "talks"와 같은 관련 단어를 어근인 "talk"로 줄입니다.
편집: 공개 문서에서 민감한 정보를 제거합니다.
토크필터에는 유형 필드가 필요하며, 일부는 추가 옵션도 필요합니다. 다음과 같은 구문을 갖습니다:
"tokenFilters": [ { "type": "<token-filter-type>", "<additional-option>": <value> } ]
다음 샘플 인덱스 정의 및 쿼리는 minutes
라는 샘플 collection을 사용합니다. minutes
collection을 Atlas cluster의 데이터베이스에 추가하는 경우, Atlas UI의 Atlas Search Visual 또는 JSON 편집기에서 다음 샘플 인덱스를 만들고 이 collection에 대해 샘플 쿼리를 실행할 수 있습니다. 이러한 인덱스를 생성하려면 Atlas UI에서 원하는 구성 방법을 선택한 후 데이터베이스와 collection을 선택하고 인덱스를 수정하여 토큰 필터를 사용하는 사용자 지정 분석기를 추가하세요.
참고
Atlas UI에서 Visual Editor을(를) 사용하여 사용자 지정 분석기를 추가하는 경우 Atlas UI는 Custom Analyzers 섹션에 분석기에 대한 다음 세부 정보를 표시합니다.
이름 | 사용자 지정 분석기를 식별하는 레이블입니다. |
---|---|
사용 분야 | 사용자 지정 분석기를 사용하는 필드입니다. 사용자 지정 분석기를 사용하여 필드를 분석하지 않는 경우 값은 없음입니다. |
문자 필터 | 사용자 지정 분석기에 구성된 Atlas Search 문자 필터 입니다. |
토크나이저 | 사용자 지정 분석기에 구성된 Atlas Search 토크나이저. |
토큰 필터 | 사용자 지정 분석기에 구성된 Atlas Search 토큰 필터 . |
작업 | 사용자 지정 분석기에서 수행할 수 있는 작업을 나타내는 클릭 가능한 아이콘입니다.
|
asciiFolding
토큰 필터는 기본 라틴 유니코드 블록 에 없는 알파벳, 숫자 및 기호 유니코드 문자를 변환합니다. 사용 가능한 경우 asciiFolding
ASCII 에 해당하는 것으로 변환합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 asciiFolding 이어야 합니다. |
originalTokens | 문자열 | 아니 | 토큰 필터의 출력에 원래 토큰을 포함할지 또는 생략할지 여부를 지정하는 문자열입니다. 값은 다음 중 하나일 수 있습니다:
기본값: |
예제
다음 인덱스 정의는 asciiConverter
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.first_name
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
asciiFolding
토큰 필터를 적용하여 필드 값을 ASCII에 해당하는 값으로 변환합니다.
다음 쿼리는 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
과 일치시키는 데 사용했기 때문입니다.
필드 이름 | 출력 토큰 |
---|---|
page_updated_by.first_name | Sian |
daitchMokotoffSoundex
daitchMokotoffSoundex
토큰 필터는 Daitch-Mokotoff 사운덱스 기반으로 소리가 동일한 6 단어에 대한 토큰을 생성합니다. 음성 알고리즘. 이 필터는 각 입력에 대해 여러 인코딩을 생성할 수 있으며, 인코딩된 각 토큰은 숫자입니다.
참고
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 daitchMokotoffSoundex 이어야 합니다. |
originalTokens | 문자열 | 아니 | 토큰 필터의 출력에 원래 토큰을 포함할지 또는 생략할지 여부를 지정하는 문자열입니다. 값은 다음 중 하나일 수 있습니다:
기본값: |
예제
다음 인덱스 정의는 dmsAnalyzer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.last_name
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
daitchMokotoffSoundex
토큰 필터를 적용하여 같은 소리의 단어에 대해 토큰을 인코딩합니다.
다음 쿼리는 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 | 출력 토큰 |
---|---|
"_id": 1 | AUERBACH , 097400 , 097500 |
"_id": 2 | OHRBACH , 097400 , 097500 |
edgeGram
edgeGram
토큰 필터는 텍스트 입력의 왼쪽 또는 '가장자리'로부터의 입력을 구성된 크기의 n-그램으로 토큰화합니다.
참고
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 edgeGram 이어야 합니다. |
minGram | integer | 네 | 생성되는 n-그램의 최소 길이를 지정하는 숫자입니다. 값은 maxGram 이하여야 합니다. |
maxGram | integer | 네 | 생성되는 n-그램의 최대 길이를 지정하는 숫자입니다. 값은 minGram 이상이어야 합니다. |
termNotInBounds | 문자열 | 아니 | 토큰을
기본값: |
예제
다음 인덱스 정의는 titleAutocomplete
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
icuFolding
토큰 필터를 사용하여 토큰에 문자 접기를 적용합니다.edgeGram
토큰 필터를 사용하여 왼쪽에서 4~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 | 출력 토큰 |
---|---|
"_id": 1 | team , team' , team's , week , weekl , weekly , meet , meeti , meetin , meeting |
"_id": 3 | regu , regul , regula , regular , boar , board , meet , meeti , meetin , meeting |
englishPossessive
englishPossessive
토큰 필터는 단어에서 소유격(단어 끝의 's
)을 제거합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 englishPossessive 이어야 합니다. |
예제
다음 인덱스 정의는 englishPossessiveStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰(검색어)을 생성합니다.
EnglishPossessive 토큰 필터를 적용하여 토큰에서 소유격(후행
's
)을 제거합니다.
다음 쿼리는 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 | 출력 토큰 |
---|---|
"_id": 1 | The , team , weekly , meeting |
"_id": 2 | The , check , in , with , sales , team |
flattenGraph
flattenGraph
토큰 필터는 토큰 필터 그래프를 인덱싱에 적합한 평면 형태로 변환합니다. wordDelimiterGraph 토큰 필터를 사용하는 경우, 이 필터를 wordDelimiterGraph 토큰 필터 뒤에 사용하세요.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 flattenGraph 이어야 합니다. |
예제
다음 인덱스 정의는 wordDelimiterGraphFlatten
이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
토큰에 다음 필터를 적용합니다.
wordDelimiterGraph 토큰 필터를 사용하여 하위 단어를 기준으로 토큰을 분할하고, 원래 단어에 대한 토큰을 생성하며,
SIGN_IN
단어가 구분되지 않도록 보호합니다.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 | 출력 토큰 |
_id: 3 | try , to , sign-in , sign , in |
icuFolding
토큰 필터는 유니코드 icuFolding
기술30 보고서의 문자 접기를 적용합니다. # 악센트 제거, 대소문자 접기, 표준 중복 접기 등 보고서에 자세히 설명된 기타 여러 기능이 있습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 icuFolding 이어야 합니다. |
예제
다음 인덱스 정의는 diacriticFolder
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.sv_FI
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 문자열 필드에 있는 모든 용어를 단일 용어로 토큰화합니다.
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 | 출력 토큰 |
---|---|
_id: 1 | den har sidan behandlar avdelningsmoten |
_id: 2 | forst talade chefen for forsaljningsavdelningen |
icuNormalizer
토큰 필터는 icuNormalizer
표준 유니코드 정규화 모드를사용하여 토큰을 정규화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 icuNormalizer 이어야 합니다. |
normalizationForm | 문자열 | 아니 | 적용할 정규화 형식입니다. 허용되는 값은 다음과 같습니다.
지원되는 정규화 형식에 대해 자세히 알아보려면 섹션을 1참조하세요.2: 정규화 형식, UTR#15. 기본값: |
예제
다음 인덱스 정의는 textNormalizer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 사용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성할 수 있습니다.
icuNormalizer
토큰 필터를 사용하여 호환성 분해로 토큰을 정규화한 다음 표준 구성으로 토큰을 정규화하세요.
다음 쿼리는 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
정규화 형식을 사용하여 결과에서 문서에 대해 생성하는 토큰(검색 가능한 용어)과 다른 정규화 형식에 대해 생성하는 토큰을 비교하여 보여 줍니다.
정규화 형식 | 출력 토큰 | 경기 1 |
nfd | do , not , forget , to , SIGN-IN. , See , ① , for , details. | X |
nfc | do , not , forget , to , SIGN-IN. , See , ① , for , details. | X |
nfkd | do , not , forget , to , SIGN-IN. , See , 1 , for , details. | √ |
nfkc | do , not , forget , to , SIGN-IN. , See , 1 , for , details. | √ |
kStemming
kStemming
토큰 필터는 어간 처리 알고리즘과 내장된 영어 사전을 조합하여 단어의 어간을 처리합니다. 소문자 텍스트를 사용하며 대문자 텍스트는 수정하지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 kStemming 이어야 합니다. |
예제
다음 인덱스 정의는 kStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.en_US
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
다음 쿼리는 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
가 있는 문서를 반환합니다. 소문자 토큰 필터는 토큰 텍스트를 소문자로 정규화하고, kStemming 토큰 필터는 문서의 text.en_US
필드에 있는 복수형 meetings
을(를) 단수형 쿼리 용어와 일치시키기 때문에 Atlas Search는 쿼리 용어를 문서와 일치시킵니다. 또한 Atlas Search는 인덱스 분석기를 사용하여(또는 지정된 경우 searchAnalyzer
을 사용하여) 쿼리 용어를 분석합니다. 구체적으로, Atlas Search는 결과에서 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 이를 쿼리 용어와 일치시키는 데 사용합니다.
head
, this
, page
, deal
, with
, department
, meeting
, head
분량
length
토큰 필터는 너무 짧거나 너무 긴 토큰을 제거합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 length 이어야 합니다. |
min | integer | 아니 | 토큰의 최소 길이를 지정하는 숫자입니다. 값은 기본값: |
max | integer | 아니 | 토큰의 최대 길이를 지정하는 숫자입니다. 값은 기본값: |
예제
다음 인덱스 정의는 longOnly
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.sv_FI
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 사용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
icuFolding 토큰 필터를 사용하여 문자 접기를 적용합니다.
length
토큰화 후 UTF-16 코드 단위가 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
토큰 필터는 토큰 텍스트를 소문자로 정규화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 lowercase 이어야 합니다. |
예제
nGram
토큰 필터는 입력을 구성된 nGram
크기의 n-그램으로 토큰화합니다. 동의어 또는 자동 완성 매핑 정의에는 nGram 토큰 필터를 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 nGram 이어야 합니다. |
minGram | integer | 네 | 생성되는 n-그램의 최소 길이를 지정하는 숫자입니다. 값은 maxGram 이하여야 합니다. |
maxGram | integer | 네 | 생성되는 n-그램의 최대 길이를 지정하는 숫자입니다. 값은 minGram 이상이어야 합니다. |
termNotInBounds | 문자열 | 아니 | 토큰을
기본값: |
예제
다음 인덱스 정의는 titleAutocomplete
이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기 함수는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성합니다.
토큰에 일련의 토큰 필터를 적용합니다.
englishPossessive
을(를) 사용하여 단어에서 소유격(단어 끝의's
)을 제거합니다.nGram
을(를) 사용하여 단어를 4~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*
과 일치시키며, 다음과 같은 토큰들(검색 가능한 용어들)을 생성함으로써 매치됩니다
정규화 형식 | 출력 토큰 |
---|---|
_id: 2 | team , week , weekl , weekly , eekl , eekly , ekly , meet , meeti , meetin , meeting , eeti , eeti , eeting , etin , eting , ting |
_id: 3 | regu , regul , regula , regular , egul , egula , egular , gula , gular , ular , boar , board , oard , meet , meeti , meetin , meeting , eeti , eeti , eeting , etin , eting , ting |
참고
termNotInBounds
매개 변수는 기본적으로 omit
로 설정되어 있기 때문에 4자 미만(예: the
) 및 7자 이상의 용어에 대한 토큰은 Atlas Search에서 생성되지 않습니다. termNotInBounds
매개 변수 값을 include
로 설정하면 Atlas Search는 the
라는 용어에 대한 토큰도 생성합니다.
porterStemming
porterStemming
토큰 필터는 포터 어간 처리 알고리즘을 사용하여 영어 단어에서 일반적인 어간 및 굴절 접미사를 제거합니다. 소문자 텍스트가 처리되며 대문자 텍스트는 처리되지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 porterStemming 이어야 합니다. |
예제
다음 인덱스 정의는 porterStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 단어를 소문자로 변환합니다.
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
Meet
문서를 반환합니다. Atlas Search는 쿼리 용어 과 일치합니다. 구체적으로, Atlas Search는 결과의 문서에 대해 다음과 같은 토큰(검색 가능한 용어)을 생성한 다음 쿼리 용어 Meet
와 일치시킵니다.
정규화 형식 | 출력 토큰 |
---|---|
_id: 1 | the , team' , weekli , meet |
_id: 3 | the , regular , board , meet |
정규식
regex
토큰 필터는 각 토큰에 정규 표현식을 적용하여 일치하는 항목을 지정된 문자열로 바꿉니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | 문자열 | 네 | 사람이 읽을 수 있는 레이블로 이 토큰 필터를 식별합니다. 값은 regex 이어야 합니다. | |||||||||||||||||||||
pattern | 문자열 | 네 | 각 토큰에 적용할 표현식 패턴입니다. | |||||||||||||||||||||
replacement | 문자열 | 네 | 일치하는 패턴이 발생할 때마다 대체할 대체 문자열입니다. 참고토큰을 무시하거나 삭제하기 위해 빈 문자열(
| |||||||||||||||||||||
matches | 문자열 | 네 | 허용되는 값은 다음과 같습니다.
|
예제
다음 인덱스 정의는 emailRedact
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.email
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 필드 값의 모든 단어를 단일 용어로 인덱싱합니다.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 토큰의 대문자를 소문자로 바꿉니다.
regex
토큰 필터를 사용하여 토큰에서 이메일 주소처럼 보이는 문자열을 찾아redacted
라는 단어로 바꿉니다.
다음 쿼리는 와일드카드 연산자를 사용하여 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
토큰 필터는 각 문자열 토큰을 반전시킵니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 사람이 읽을 수 있는 레이블로 이 토큰 필터를 식별합니다. 값은 reverse 이어야 합니다. |
예제
다음 인덱스 정의는 keywordReverse
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.email
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
키워드 토크나이저를 적용하여 전체 문자열을 단일 용어로 토큰화합니다.
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@*
과 일치시킵니다.
정규화 형식 | 출력 토큰 |
---|---|
_id: 1 | moc.elpmaxe@hcabreua |
_id: 2 | moc.elpmaxe@kcabrho |
_id: 3 | moc.elpmaxe@yksniwel |
_id: 4 | moc.elpmaxe@iksnivel |
싱글
shingle
토큰 필터는 일련의 토큰에서 싱글(토큰 n-그램)을 구성합니다. 동의어 또는 자동 완성 매핑 정의에는 shingle
토큰 필터를 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 shingle 이어야 합니다. |
minShingleSize | integer | 네 | 싱글당 최소 토큰 수입니다. 값은 maxShingleSize 이하여야 합니다. |
maxShingleSize | integer | 네 | 싱글당 최대 토큰 수입니다. 값은 minShingleSize 이상이어야 합니다. |
예제
minutes 컬렉션의 page_updated_by.email
필드에 대한 다음 인덱스 정의 예제에서는 두 개의 사용자 지정 분석기 emailAutocompleteIndex
및 emailAutocompleteSearch
를 사용하여 자동 완성과 유사한 기능을 구현합니다. Atlas Search는 인덱스 생성 중에 emailAutocompleteIndex
분석기를 사용하여 다음을 수행합니다.
Atlas Search는 검색 중에 emailAutocompleteSearch
분석기를 사용하여 다음을 수행합니다.
필드에서
@
문자를AT
로 바꾸기공백 토크나이저를 사용하여 토큰 생성
다음 쿼리는 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자)을 보여줍니다.
토큰 검색 | 인덱스 토큰 |
---|---|
auerbachATexamp | au , aue , auer , auerb , auerba , auerbac , auerbach , auerbachA , auerbachAT , auerbachATe , auerbachATex , auerbachATexa , auerbachATexam , auerbachATexamp |
snowballStemming
snowballStemming
토큰은 Snowball에서 생성된 어간 처리기를 사용하여 Stems 토큰을 필터링합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 snowballStemming 이어야 합니다. |
stemmerName | 문자열 | 네 | 유효한 값은 다음과 같습니다.
|
예제
다음 인덱스 정의는 frenchStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.fr_CA
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 토큰을 소문자로 변환합니다.
french
어간 단어에 대한snowballStemming
토큰 필터의 변형입니다.
다음 쿼리는 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 | 출력 토큰 |
---|---|
_id: 1 | cet , pag , trait , de , réunion , de , départ |
spanishPluralStemming
spanishPluralStemming
토큰 필터는 스페인어 복수형 단어의 어간을 처리합니다. 소문자 텍스트를 사용합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 spanishPluralStemming 이어야 합니다. |
예제
다음 인덱스 정의는 spanishPluralStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.es_MX
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 토큰 필터를 적용합니다.
lowercase 토큰 필터를 사용하여 스페인어 용어를 소문자로 변환합니다.
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 | 출력 토큰 |
_id: 4 | la , pagina , ha , sido , actualizada , con , los , punto , de , la , agenda |
stempel
stempel
토큰 필터는 Lucene의 기본 폴란드어 어간 처리 테이블 을 사용합니다. 을(를) 사용하여 폴란드어로 단어의 어간을 처리합니다. 소문자 텍스트를 사용합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 stempel 이어야 합니다. |
예제
다음 인덱스 정의는 stempelStemmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.pl_PL
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
표준 토크나이저를 적용하여 단어 나누기 규칙에 따라 토큰을 생성하세요.
토큰에 다음 필터를 적용합니다.
다음 쿼리는 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 | 출력 토큰 |
---|---|
_id: 4 | strona , zostać , zaktualizować , o , punkt , porządek , obrada |
중지 단어
stopword
토큰 필터는 지정된 중지 단어에 해당하는 토큰을 제거합니다. 이 토큰 필터는 지정된 중지 단어를 분석하지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 stopword 이어야 합니다. |
tokens | 문자열 배열 | 네 | 제거할 토큰에 해당하는 중지 단어가 포함된 목록입니다. 값은 하나 이상의 중지 단어여야 합니다. |
ignoreCase | 부울 | 아니 | 제거할 토큰을 필터링할 때 중지 단어의 대소문자를 무시할지 여부를 나타내는 플래그입니다. 값은 다음 중 하나일 수 있습니다.
기본값: |
예제
다음 인덱스 정의는 stopwordRemover
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
stopword
토큰 필터를 적용하여 정의된 중지 단어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 | 출력 토큰 |
---|---|
_id: 2 | head , of , sales , department , spoke , first. |
트림
trim
토큰 필터는 토큰에서 선행 및 후행 공백을 잘라냅니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 trim 이어야 합니다. |
예제
다음 인덱스 정의는 tokenTrimmer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 text.en_US
를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
htmlStrip 문자 필터를 적용하여
a
태그 외의 모든 HTML 태그를 텍스트에서 제거합니다.키워드 토크나이저를 적용하여 전체 문자열에 대한 단일 토큰을 생성합니다.
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 | 출력 토큰 |
---|---|
_id: 1 | This page deals with department meetings. |
wordDelimiterGraph
wordDelimiterGraph
토큰 필터는 구성된 규칙에 따라 토큰을 하위 토큰으로 분할합니다. 표준 토크나이저는 이 토큰 필터가 경계를 결정하는 데 사용하는 많은 단어 내 구분 기호를 제거하므로 이 토큰 필터를 표준 토크나이저와 함께 사용하지 않는 것이 좋습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
type | 문자열 | 네 | 이 토큰 필터 유형을 식별하는, 사람이 읽을 수 있는 레이블입니다. 값은 wordDelimiterGraph 이어야 합니다. |
delimiterOptions | 객체 | 아니 | 단어를 하위 단어로 분할하는 방법을 결정하는 규칙이 포함된 객체입니다. 기본값: |
delimiterOptions .generateWordParts | 부울 | 아니 | 하위 단어를 기준으로 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .generateNumberParts | 부울 | 아니 | 하위 번호를 기준으로 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateWords | 부울 | 아니 | 하위 단어의 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateNumbers | 부울 | 아니 | 하위 번호의 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .concatenateAll | 부울 | 아니 | 모든 실행을 연결할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .preserveOriginal | 부울 | 아니 | 원래 단어의 토큰을 생성할지 여부를 나타내는 플래그입니다. 기본값: |
delimiterOptions .splitOnCaseChange | 부울 | 아니 | 대소문자 전환에 따라 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .splitOnNumerics | 부울 | 아니 | 문자-숫자 전환에 따라 토큰을 분할할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .stemEnglishPossessive | 부울 | 아니 | 각 하위 단어에서 후행 소유격을 제거할지 여부를 나타내는 플래그입니다. 예를 들어 기본값: |
delimiterOptions .ignoreKeywords | 부울 | 아니 |
기본값: |
protectedWords | 객체 | 아니 | 보호된 단어에 대한 옵션이 포함된 객체입니다. 기본값: |
protectedWords .words | 배열 | 조건부 | 구분되지 않도록 보호할 토큰이 포함된 목록입니다. protectedWords 를 지정하는 경우 이 옵션을 지정해야 합니다. |
protectedWords .ignoreCase | 부울 | 아니 | 보호된 단어의 대소문자 구분을 무시할지 여부를 나타내는 플래그입니다. 기본값: |
true
인 경우, 이 옵션 뒤에 flattenGraph 토큰 필터를 적용하여 토큰 스트림을 인덱싱에 적합하게 만듭니다.
예제
다음 인덱스 정의는 wordDelimiterGraphAnalyzer
라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 title
필드를 인덱싱합니다. 사용자 지정 분석기는 다음을 지정합니다.
공백 토크나이저를 적용하여 단어 사이의 공백 발생을 기준으로 토큰을 생성합니다.
다음에 wordDelimiterGraph 토큰 필터를 적용합니다.
is
,the
,at
를 분할하려고 하지 마세요. 제외는 대소문자를 구분합니다. 예를 들어Is
및tHe
는 제외되지 않습니다.대소문자 변경 시 토큰을 분할하고 영어 알파벳에서 알파벳만 포함된 토큰을 제거합니다.
다음 쿼리는 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 옵션 | 출력 토큰 |
---|---|
protectedWords | The , daily , huddle , on , t , He , Stand , Up , App , 2 |
delimiterOptions | The , daily , huddle , on , 2 |