토크나이저
이 페이지의 내용
사용자 지정 분석기의 토크나이저는 Atlas Search가 인덱싱을 위해 텍스트를 개별 청크로 분할하는 방법을 결정합니다. 토크나이저에는 유형 필드가 필요하며, 일부 토크나이저에는 추가 옵션도 필요합니다.
"tokenizer": { "type": "<tokenizer-type>", "<additional-option>": "<value>" }
다음 샘플 인덱스 정의 및 쿼리는 minutes
라는 샘플 컬렉션을 사용합니다. Atlas 클러스터의 데이터베이스에 minutes
컬렉션을 추가하면, Atlas UI의 시각적 편집기 또는 JSON 편집기를 사용하여 이 샘플 인덱스를 생성하고 해당 컬렉션에 대해 샘플 쿼리를 실행할 수 있습니다. 이 인덱스를 생성하려면 Atlas UI에서 선호하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 토크나이저를 사용하는 사용자 정의 분석기를 추가하여 인덱스를 세분화하세요.
참고
Atlas UI에서 Visual Editor을(를) 사용하여 사용자 지정 분석기를 추가하는 경우 Atlas UI는 Custom Analyzers 섹션에 분석기에 대한 다음 세부 정보를 표시합니다.
이름 | 사용자 지정 분석기를 식별하는 레이블입니다. |
사용 분야 | 사용자 지정 분석기를 사용하는 필드입니다. 사용자 지정 분석기를 사용하여 필드를 분석하지 않는 경우 값은 없음입니다. |
문자 필터 | 사용자 지정 분석기에 구성된 Atlas Search 문자 필터 입니다. |
토크나이저 | 사용자 지정 분석기에 구성된 Atlas Search 토크나이저. |
토큰 필터 | 사용자 지정 분석기에서 구성된 Atlas Search 토큰 필터입니다. |
작업 | 사용자 지정 분석기에서 수행할 수 있는 작업을 나타내는 클릭 가능한 아이콘입니다.
|
edgeGram
토크나이저 나이저는 텍스트 입력의 왼쪽 또는 '가장자리'로부터의 입력을 지정된 크기의 n-그램으로 토큰화합니다. 동의어 edgeGram
analyzer
또는 자동 완성 필드 매핑 정의에 대해 필드 에 edgeGram토크나이저 와 함께 사용자 지정 분석기 를 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
참고
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | 네 | 생성된 가장 짧은 토큰에 포함할 문자 수입니다. |
| integer | 네 | 생성된 가장 긴 토큰에 포함할 문자 수입니다. |
예시
다음 인덱스 정의는 edgegramExample
이라는 사용자 지정 분석기를 사용하여 minutes
컬렉션의 message
필드를 인덱싱합니다. edgeGram
토크나이저를 사용하여 message
필드의 단어 왼쪽에 있는 첫 번째 문자로부터 문자 2
~ 7
사이에서 토큰(검색 가능한 텀)을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
edgegramExample
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 edgeGram을 선택하고 다음 필드에 값을 입력합니다.
필드값minGram
2
maxGram
7
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
edgegramExample
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "message": { "analyzer": "edgegramExample", "type": "string" } } }, "analyzers": [ { "charFilters": [], "name": "edgegramExample", "tokenFilters": [], "tokenizer": { "maxGram": 7, "minGram": 2, "type": "edgeGram" } } ] }
다음 쿼리는 minutes
collection의 message
필드에서 tr
로 시작하는 텍스트를 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "tr", 6 "path": "message" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "message": 1 14 } 15 } 16 ])
{ _id: 1, message: 'try to siGn-In' }, { _id: 3, message: 'try to sign-in' }
Atlas Search는 검색어와 일치하는 문서에 대해 edgeGram
토크나이저를 사용하여 tr
값의 토큰을 생성했기 때문에 결과에 _id: 1
및 _id: 3
이(가) 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 message
필드를 인덱싱하면 Atlas Search는 검색어 tr
에 대한 결과를 반환하지 않습니다.
다음 표는 edgeGram
토크나이저와 이와는 대조적인 standard
토크나이저가 결과 내 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
keyword
keyword
토크나이저는 전체 입력을 단일 토큰으로 토큰화합니다. Atlas Search는 keyword
토크나이저를 사용하여 32766자를 초과하는 문자열 필드를 인덱싱하지 않습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
예시
다음 인덱스 정의는 keywordExample
이라는 사용자 지정 분석기를 사용하여 minutes
컬렉션의 message
필드를 인덱싱합니다. keyword
토크나이저를 사용하여 전체 필드에 대한 토큰(검색 가능한 텀)을 단일 텀으로 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
keywordExample
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 keyword 을(를) 선택합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
keywordExample
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "message": { "analyzer": "keywordExample", "type": "string" } } }, "analyzers": [ { "charFilters": [], "name": "keywordExample", "tokenFilters": [], "tokenizer": { "type": "keyword" } } ] }
다음 message
쿼리는 minutes
컬렉션의 필드에서 구문 try to sign-in
을 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "try to sign-in", 6 "path": "message" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "message": 1 14 } 15 } 16 ])
{ _id: 3, message: 'try to sign-in' }
Atlas Search는 검색어와 일치하는 문서의 keyword
토크나이저를 사용하여 값이 try to sign-in
인 토큰을 생성했으므로 결과에 _id: 3
가 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 message
필드를 인덱싱하는 경우, 각 문서에 standard
토크나이저가 생성한 일부 토큰이 포함되어 있으므로 Atlas Search는 try to sign-in
검색어에 대해 _id: 1
, _id: 2
, _id: 3
이 있는 문서를 반환합니다.
다음 표는 keyword
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 3
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
nGram
nGram
토크나이저는 주어진 크기의 텍스트 청크 또는 'n-gram'으로 토큰화합니다. analyzer
필드에서 동의어 또는 자동 완성 필드 매핑 정의에 대해 사용자 지정 분석기를 nGram 토크나이저와 함께 사용할 수 없습니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | 네 | 생성된 가장 짧은 토큰에 포함할 문자 수입니다. |
| integer | 네 | 생성된 가장 긴 토큰에 포함할 문자 수입니다. |
예시
다음 인덱스 정의는 ngramExample
이라는 사용자 지정 분석기를 사용하여 minutes
collection의 title
필드를 인덱싱합니다. nGram
토크나이저를 사용하여 title
필드에서 4
자와 6
자 사이의 토큰(검색 가능한 용어)을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
ngramExample
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 nGram을 선택하고 다음 필드에 값을 입력합니다.
필드값minGram
4
maxGram
6
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
ngramExample
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "title": { "analyzer": "ngramExample", "type": "string" } } }, "analyzers": [ { "charFilters": [], "name": "ngramExample", "tokenFilters": [], "tokenizer": { "maxGram": 6, "minGram": 4, "type": "nGram" } } ] }
다음 title
쿼리는 minutes
컬렉션의 필드에서 용어 week
를 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "week", 6 "path": "title" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "title": 1 14 } 15 } 16 ])
{ _id: 1, title: "The team's weekly meeting" }
Atlas Search는 검색어와 일치하는 문서의 nGram
토크나이저를 사용하여 값이 week
인 토큰을 생성했기 때문에 결과에 _id: 1
이 포함된 문서를 반환합니다. standard
또는 edgeGram
토크나이저를 사용하여 title
필드를 인덱싱하는 경우 Atlas Search는 검색어 week
에 대한 결과를 반환하지 않습니다.
다음 표는 nGram
토크나이저와 이와는 대조적인 standard
및 edgeGram
토크나이저가 _id: 1
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
|
|
regexCaptureGroup
regexCaptureGroup
토크나이저는 정규 표현식 패턴과 일치하여 토큰을 추출합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | 네 | 일치시킬 정규 표현식. |
| integer | 네 | 토큰으로 추출할 일치하는 표현식 내 문자 그룹의 인덱스입니다. 모든 문자 그룹을 추출하려면 |
예시
다음 인덱스 정의는 phoneNumberExtractor
라는 사용자 지정 분석기를 사용하여 minutes
collection의 page_updated_by.phone
필드를 인덱싱합니다. 다음을 사용합니다.
mappings
처음 세 자리 숫자의 괄호를 제거하고 모든 공백과 마침표를 대시로 바꾸는 문자 필터regexCaptureGroup
토크나이저를 사용하여 텍스트 입력에 있는 첫 번째 미국 형식의 전화번호에서 단일 토큰을 만듭니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
phoneNumberExtractor
을 입력합니다.Character Filters을 확장하고 Add character filter을 클릭합니다.
드롭다운에서 mapping을(를) 선택하고 을(를) 클릭하세요.
Original 필드에 다음 문자를 한 번에 하나씩 입력하고 해당 Replacement 필드는 비워 둡니다.
원본교체-
.
(
)
Add character filter를 클릭합니다.
접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 regexCaptureGroup을 선택하고 다음 필드에 값을 입력합니다.
필드값pattern
^\\b\\d{3}[-]?\\d{3}[-]?\\d{4}\\b$
group
0
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.phone 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 page_updated_by.phone을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
phoneNumberExtractor
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "page_updated_by": { "fields": { "phone": { "analyzer": "phoneNumberExtractor", "type": "string" } }, "type": "document" } } }, "analyzers": [ { "charFilters": [ { "mappings": { " ": "-", "(": "", ")": "", ".": "-" }, "type": "mapping" } ], "name": "phoneNumberExtractor", "tokenFilters": [], "tokenizer": { "group": 0, "pattern": "^\\b\\d{3}[-]?\\d{3}[-]?\\d{4}\\b$", "type": "regexCaptureGroup" } } ] }
다음 page_updated_by.phone
쿼리는 minutes
컬렉션의 필드에서 전화번호 123-456-9870
을 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "123-456-9870", 6 "path": "page_updated_by.phone" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "page_updated_by.phone": 1 14 } 15 } 16 ])
{ _id: 3, page_updated_by: { phone: '(123).456.9870' }
Atlas Search는 검색어와 일치하는 문서에 대해 regexCaptureGroup
토크나이저를 사용하여 123-456-7890
값의 토큰을 생성했기 때문에 결과에 _id: 3
이(가) 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 page_updated_by.phone
필드를 인덱싱하면 Atlas Search는 검색어 123-456-7890
에 대한 모든 문서를 반환합니다.
다음 표는 regexCaptureGroup
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 3
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
regexSplit
regexSplit
토크나이저는 정규 표현식 기반 구분자를 사용하여 토큰을 분할합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| 문자열 | 네 | 일치시킬 정규 표현식. |
예시
다음 인덱스 정의는 dashDotSpaceSplitter
이라는 사용자 지정 분석기를 사용하여 minutes
컬렉션의 page_updated_by.phone
필드를 인덱싱합니다. regexSplit
토크나이저를 사용하여 page_updated_by.phone
필드에 있는 하나 이상의 하이픈, 마침표 및 공백으로 토큰(검색 가능한 텀)을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
dashDotSpaceSplitter
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운에서 regexSplit을 선택하고 다음 필드에 값을 입력합니다.
필드값pattern
[-. ]+
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.phone 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 page_updated_by.phone을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
dashDotSpaceSplitter
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "page_updated_by": { "fields": { "phone": { "analyzer": "dashDotSpaceSplitter", "type": "string" } }, "type": "document" } } }, "analyzers": [ { "charFilters": [], "name": "dashDotSpaceSplitter", "tokenFilters": [], "tokenizer": { "pattern": "[-. ]+", "type": "regexSplit" } } ] }
다음 page_updated_by.phone
쿼리는 minutes
컬렉션의 필드에서 숫자 9870
을 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "9870", 6 "path": "page_updated_by.phone" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "page_updated_by.phone": 1 14 } 15 } 16 ])
{ _id: 3, page_updated_by: { phone: '(123).456.9870' }
Atlas Search는 검색어와 일치하는 문서에 대해 regexSplit
토크나이저를 사용하여 9870
값의 토큰을 생성했기 때문에 결과에 _id: 3
이(가) 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 page_updated_by.phone
필드를 인덱싱하는 경우 Atlas Search는 검색어 9870
에 대한 결과를 반환하지 않습니다.
다음 표는 regexCaptureGroup
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 3
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
표준
standard
토크나이저는 유니코드 텍스트 세분화 알고리즘의 단어 나누기 규칙에 따라 토큰화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | no | 단일 토큰의 최대 길이입니다. 이 길이보다 큰 토큰은 기본값: |
예시
다음 인덱스 정의는 standardExample
(이)라는 사용자 지정 분석기를 사용하여 minutes
collection의 message
필드를 인덱싱합니다. standard
토크나이저 및 stopword 토큰 필터를 사용합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
standardExample
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 standard 을(를) 선택합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
standardExample
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "message": { "analyzer": "standardExample", "type": "string" } } }, "analyzers": [ { "charFilters": [], "name": "standardExample", "tokenFilters": [], "tokenizer": { "type": "standard" } } ] }
다음 message
쿼리는 minutes
컬렉션의 필드에서 용어 signature
를 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "signature", 6 "path": "message" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "message": 1 14 } 15 } 16 ])
{ _id: 4, message: 'write down your signature or phone №' }
Atlas Search는 검색어와 일치하는 문서의 standard
토크나이저를 사용하여 값이 signature
인 토큰을 생성했기 때문에 _id: 4
가 포함된 문서를 반환합니다. keyword
토크나이저를 사용하여 message
필드를 인덱싱하는 경우 Atlas Search는 검색어 signature
에 대한 결과를 반환하지 않습니다.
다음 표는 standard
토크나이저와 이와는 대조적인 keyword
분석기가 _id: 4
를 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
uaxUrlEmail
uaxUrlEmail
토크나이저는 URL과 이메일 주소를 토큰화합니다. uaxUrlEmail
토크나이저는 유니코드 텍스트 분할 알고리즘 의 단어 나누기 규칙에 따라 토큰화하지만 ,uaxUrlEmail
인덱싱된 필드 값에 URL및 이메일 주소가 포함된 경우에만 토크나이저를 사용하는 것이 좋습니다. URL이나 이메일 주소가 포함되지 않은 필드의 경우 표준 토크나이저를 사용하여 단어 나누기 규칙에 따라 토큰을 생성합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| int | no | 하나의 토큰에 포함될 수 있는 최대 문자 수입니다. 기본값: |
예시
다음 인덱스 정의는 minutes
컬렉션에서 basicEmailAddressAnalyzer
라는 사용자 지정 분석기를 사용하여 page_updated_by.email
필드를 인덱싱합니다. uaxUrlEmail
토크나이저를 사용하여 page_updated_by.email
필드에 있는 URL및 이메일 주소에서 토큰(검색 가능한 텀)을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
basicEmailAddressAnalyzer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 uaxUrlEmail 을(를) 선택합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 page_updated_by.email을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
basicEmailAddressAnalyzer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "fields": { "page_updated_by": { "fields": { "email": { "analyzer": "basicEmailAddressAnalyzer", "type": "string" } }, "type": "document" } } }, "analyzers": [ { "name": "basicEmailAddressAnalyzer", "tokenizer": { "type": "uaxUrlEmail" } } ] }
다음 쿼리는 minutes
컬렉션의 page_updated_by.email
필드에서 이메일 lewinsky@example.com
을(를) 검색합니다.
db.minutes.aggregate([ { "$search": { "text": { "query": "lewinsky@example.com", "path": "page_updated_by.email" } } }, { "$project": { "_id": 1, "page_updated_by.email": 1 } } ])
{ _id: 3, page_updated_by: { email: 'lewinsky@example.com' } }
Atlas Search는 검색어와 일치하는 문서의 uaxUrlEmail
토크나이저를 사용하여 값이 lewinsky@example.com
인 토큰을 생성했기 때문에 결과에 _id: 3
이(가) 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 page_updated_by.email
필드를 인덱싱하면 Atlas Search는 검색 텀 lewinsky@example.com
에 대한 모든 문서를 반환합니다.
다음 표는 uaxUrlEmail
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 3
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|
다음 인덱스 정의는 emailAddressAnalyzer
라는 사용자 지정 분석기를 사용하여 minutes
collection의 page_updated_by.email
필드를 인덱싱합니다. 다음을 사용합니다.
edgeGram
토큰화 전략을 사용한 자동 완성 유형URL과 이메일 주소에서 토큰(검색 가능한 텀)을 생성하는
uaxUrlEmail
토크나이저
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
emailAddressAnalyzer
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 uaxUrlEmail 을(를) 선택합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 page_updated_by.email을 선택하고 Data Type 드롭다운에서 자동 완성을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
emailAddressAnalyzer
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "fields": { "page_updated_by": { "fields": { "email": { "analyzer": "emailAddressAnalyzer", "tokenization": "edgeGram", "type": "autocomplete" } }, "type": "document" } } }, "analyzers": [ { "name": "emailAddressAnalyzer", "tokenizer": { "type": "uaxUrlEmail" } } ] }
다음 page_updated_by.email
쿼리는 minutes
컬렉션의 필드에서 용어 exam
를 검색합니다.
db.minutes.aggregate([ { "$search": { "autocomplete": { "query": "lewinsky@example.com", "path": "page_updated_by.email" } } }, { "$project": { "_id": 1, "page_updated_by.email": 1 } } ])
_id: 3, page_updated_by: { email: 'lewinsky@example.com' } }
Atlas Search는 검색어와 일치하는 문서의 uaxUrlEmail
토크나이저를 사용하여 값이 lewinsky@example.com
인 토큰을 생성했기 때문에 결과에 _id: 3
이(가) 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 page_updated_by.email
필드를 인덱싱하면 Atlas Search는 검색 텀 lewinsky@example.com
에 대한 모든 문서를 반환합니다.
다음 표는 uaxUrlEmail
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 3
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Atlas Seach 필드 유형 | Token Outputs |
---|---|---|
|
|
|
|
|
|
whitespace
whitespace
토크나이저는 단어 사이의 공백 발생을 기반으로 토큰화합니다.
속성
다음과 같은 속성이 있습니다.
이름 | 유형 | 필수 사항입니다. | 설명 |
---|---|---|---|
| 문자열 | 네 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 |
| integer | no | 단일 토큰의 최대 길이입니다. 이 길이보다 큰 토큰은 기본값: |
예시
다음 인덱스 정의는 whitespaceExample
이라는 사용자 지정 분석기를 사용하여 minutes
collection의 message
필드를 인덱싱합니다. whitespace
토크나이저를 사용하여 message
필드의 모든 공백에서 토큰(검색 가능한 용어)을 생성합니다.
Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.
Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.
Analyzer Name 필드에
whitespaceExample
을 입력합니다.접힌 경우 Tokenizer을(를) 펼칩니다.
드롭다운 메뉴에서 whitespace 을(를) 선택합니다.
인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.
Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.
Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.
데이터 유형의 속성 섹션에 있는 Index Analyzer 및 Search Analyzer 드롭다운에서
whitespaceExample
선택합니다.Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.
기본 인덱스 정의를 다음으로 교체합니다.
{ "mappings": { "dynamic": true, "fields": { "message": { "analyzer": "whitespaceExample", "type": "string" } } }, "analyzers": [ { "charFilters": [], "name": "whitespaceExample", "tokenFilters": [], "tokenizer": { "type": "whitespace" } } ] }
다음 message
쿼리는 minutes
컬렉션의 필드에서 용어 SIGN-IN
를 검색합니다.
1 db.minutes.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "SIGN-IN", 6 "path": "message" 7 } 8 } 9 }, 10 { 11 "$project": { 12 "_id": 1, 13 "message": 1 14 } 15 } 16 ])
{ _id: 2, message: 'do not forget to SIGN-IN' }
Atlas Search는 검색어와 일치하는 문서의 whitespace
토크나이저를 사용하여 값이 SIGN-IN
인 토큰을 생성했기 때문에 결과에 _id: 2
가 포함된 문서를 반환합니다. standard
토크나이저를 사용하여 message
필드를 인덱싱하면 Atlas Search는 검색어 SIGN-IN
에 대해 _id: 1
, _id: 2
, _id: 3
이 포함된 문서를 반환합니다.
다음 표는 whitespace
토크나이저와 이와는 대조적인 standard
토크나이저가 _id: 2
을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.
토크나이저 | Token Outputs |
---|---|
|
|
|
|