Docs Menu
Docs Home
/
MongoDB Atlas
/ / / / /

토크나이저

이 페이지의 내용

  • edgeGram
  • 속성
  • 예시
  • keyword
  • 속성
  • 예시
  • nGram
  • 속성
  • 예시
  • regexCaptureGroup
  • 속성
  • 예시
  • regexSplit
  • 속성
  • 예시
  • 표준
  • 속성
  • 예시
  • uaxUrlEmail
  • 속성
  • 예시
  • whitespace
  • 속성
  • 예시

사용자 지정 분석기의 토크나이저는 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 토큰 필터입니다.

작업

사용자 지정 분석기에서 수행할 수 있는 작업을 나타내는 클릭 가능한 아이콘입니다.

  • 사용자 지정 분석기를 편집하려면 을(를) 클릭합니다.

  • 사용자 지정 분석기를 삭제하려면 을(를) 클릭합니다.

토크나이저 나이저는 텍스트 입력의 왼쪽 또는 '가장자리'로부터의 입력을 지정된 크기의 n-그램으로 토큰화합니다. 동의어 edgeGram analyzer 또는 자동 완성 필드 매핑 정의에 대해 필드 에 edgeGram토크나이저 와 함께 사용자 지정 분석기 를 사용할 수 없습니다.

다음과 같은 속성이 있습니다.

참고

edgeGram 토크나이저는 입력 텍스트의 단어당 및 단어 전체에 걸쳐 여러 출력 토큰을 생성하여 토큰 그래프를 만들어 냅니다.

자동 완성 필드 유형 매핑 정의 및 동의어 매핑이 있는 분석기는 그래프를 생성하지 않는 토크나이저와 함께 사용할 때만 작동하므로, analyzer 자동 완성 필드 유형 매핑 정의 또는 동의어 매핑이 있는 분석기에 대해 필드에 edgeGram 토크나이저가 있는 사용자 지정 분석기를 사용할 수 없습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 edgeGram이어야 합니다.

minGram

integer

생성된 가장 짧은 토큰에 포함할 문자 수입니다.

maxGram

integer

생성된 가장 긴 토큰에 포함할 문자 수입니다.

다음 인덱스 정의는 edgegramExample이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message 필드를 인덱싱합니다. edgeGram 토크나이저를 사용하여 message 필드의 단어 왼쪽에 있는 첫 번째 문자로부터 문자 2 ~ 7 사이에서 토큰(검색 가능한 텀)을 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 edgegramExample을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운에서 edgeGram을 선택하고 다음 필드에 값을 입력합니다.

    필드

    minGram

    2

    maxGram

    7

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 edgegramExample 선택합니다.

  10. 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로 시작하는 텍스트를 검색합니다.

1db.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

standard

try, to, sign, in

edgeGram

tr, try, try{SPACE}, try t, try to, try to{SPACE}

keyword 토크나이저는 전체 입력을 단일 토큰으로 토큰화합니다. Atlas Search는 keyword 토크나이저를 사용하여 32766자를 초과하는 문자열 필드를 인덱싱하지 않습니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 keyword이어야 합니다.

다음 인덱스 정의는 keywordExample이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 message 필드를 인덱싱합니다. keyword 토크나이저를 사용하여 전체 필드에 대한 토큰(검색 가능한 텀)을 단일 텀으로 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 keywordExample을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운 메뉴에서 keyword 을(를) 선택합니다.

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 keywordExample 선택합니다.

  10. 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을 검색합니다.

1db.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

standard

try, to, sign, in

keyword

try to sign-in

nGram 토크나이저는 주어진 크기의 텍스트 청크 또는 'n-gram'으로 토큰화합니다. analyzer 필드에서 동의어 또는 자동 완성 필드 매핑 정의에 대해 사용자 지정 분석기를 nGram 토크나이저와 함께 사용할 수 없습니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 nGram이어야 합니다.

minGram

integer

생성된 가장 짧은 토큰에 포함할 문자 수입니다.

maxGram

integer

생성된 가장 긴 토큰에 포함할 문자 수입니다.

다음 인덱스 정의는 ngramExample이라는 사용자 지정 분석기를 사용하여 minutes collection의 title 필드를 인덱싱합니다. nGram 토크나이저를 사용하여 title 필드에서 4자와 6자 사이의 토큰(검색 가능한 용어)을 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 ngramExample을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운에서 nGram을 선택하고 다음 필드에 값을 입력합니다.

    필드

    minGram

    4

    maxGram

    6

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭해 제목 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 title(제목)을, Data Type 드롭다운에서 String(문자열)을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 ngramExample 선택합니다.

  10. 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를 검색합니다.

1db.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 토크나이저와 이와는 대조적인 standardedgeGram토크나이저가 _id: 1을 사용하여 문서에 대해 생성하는 토큰을 보여줍니다.

토크나이저
Token Outputs

standard

The, team's, weekly, meeting

edgeGram

The{SPACE}, The t, The te

nGram

The{SPACE}, The t, The te, he t, ... , week, weekl, weekly, eekl, ..., eetin, eeting, etin, eting, ting

regexCaptureGroup 토크나이저는 정규 표현식 패턴과 일치하여 토큰을 추출합니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 regexCaptureGroup이어야 합니다.

pattern

문자열

일치시킬 정규 표현식.

group

integer

토큰으로 추출할 일치하는 표현식 내 문자 그룹의 인덱스입니다. 모든 문자 그룹을 추출하려면 0을 사용합니다.

다음 인덱스 정의는 phoneNumberExtractor라는 사용자 지정 분석기를 사용하여 minutes collection의 page_updated_by.phone 필드를 인덱싱합니다. 다음을 사용합니다.

  • mappings 처음 세 자리 숫자의 괄호를 제거하고 모든 공백과 마침표를 대시로 바꾸는 문자 필터

  • regexCaptureGroup 토크나이저를 사용하여 텍스트 입력에 있는 첫 번째 미국 형식의 전화번호에서 단일 토큰을 만듭니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 phoneNumberExtractor을 입력합니다.

  4. Character Filters을 확장하고 Add character filter을 클릭합니다.

  5. 드롭다운에서 mapping을(를) 선택하고 을(를) 클릭하세요.

  6. Original 필드에 다음 문자를 한 번에 하나씩 입력하고 해당 Replacement 필드는 비워 둡니다.

    원본
    교체

    -

    .

    (

    )

  7. Add character filter를 클릭합니다.

  8. 접힌 경우 Tokenizer을(를) 펼칩니다.

  9. 드롭다운에서 regexCaptureGroup을 선택하고 다음 필드에 값을 입력합니다.

    필드

    pattern

    ^\\b\\d{3}[-]?\\d{3}[-]?\\d{4}\\b$

    group

    0

  10. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  11. Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.phone 필드에 사용자 지정 분석기를 적용합니다.

  12. Field Name 드롭다운에서 page_updated_by.phone을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.

  13. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 phoneNumberExtractor 선택합니다.

  14. 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을 검색합니다.

1db.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

standard

123, 456.9870

regexCaptureGroup

123-456-9870

regexSplit 토크나이저는 정규 표현식 기반 구분자를 사용하여 토큰을 분할합니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 regexSplit이어야 합니다.

pattern

문자열

일치시킬 정규 표현식.

다음 인덱스 정의는 dashDotSpaceSplitter이라는 사용자 지정 분석기를 사용하여 minutes 컬렉션의 page_updated_by.phone 필드를 인덱싱합니다. regexSplit 토크나이저를 사용하여 page_updated_by.phone 필드에 있는 하나 이상의 하이픈, 마침표 및 공백으로 토큰(검색 가능한 텀)을 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 dashDotSpaceSplitter을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운에서 regexSplit을 선택하고 다음 필드에 값을 입력합니다.

    필드

    pattern

    [-. ]+

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.phone 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 page_updated_by.phone을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 dashDotSpaceSplitter 선택합니다.

  10. 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을 검색합니다.

1db.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

123, 456.9870

regexSplit

(123), 456, 9870

standard 토크나이저는 유니코드 텍스트 세분화 알고리즘의 단어 나누기 규칙에 따라 토큰화합니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 standard이어야 합니다.

maxTokenLength

integer

no

단일 토큰의 최대 길이입니다. 이 길이보다 큰 토큰은 maxTokenLength에서 여러 토큰으로 분할됩니다.

기본값: 255

다음 인덱스 정의는 standardExample(이)라는 사용자 지정 분석기를 사용하여 minutes collection의 message 필드를 인덱싱합니다. standard 토크나이저 및 stopword 토큰 필터를 사용합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 standardExample을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운 메뉴에서 standard 을(를) 선택합니다.

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 standardExample 선택합니다.

  10. Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.

기본 인덱스 정의를 다음으로 교체합니다.

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "standardExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "standardExample",
"tokenFilters": [],
"tokenizer": {
"type": "standard"
}
}
]
}

다음 message 쿼리는 minutes 컬렉션의 필드에서 용어 signature를 검색합니다.

1db.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

standard

write, down, your, signature, or, phone

keyword

write down your signature or phone №

uaxUrlEmail 토크나이저는 URL과 이메일 주소를 토큰화합니다. uaxUrlEmail 토크나이저는 유니코드 텍스트 분할 알고리즘 의 단어 나누기 규칙에 따라 토큰화하지만 ,uaxUrlEmail 인덱싱된 필드 값에 URL및 이메일 주소가 포함된 경우에만 토크나이저를 사용하는 것이 좋습니다. URL이나 이메일 주소가 포함되지 않은 필드의 경우 표준 토크나이저를 사용하여 단어 나누기 규칙에 따라 토큰을 생성합니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 uaxUrlEmail이어야 합니다.

maxTokenLength

int

no

하나의 토큰에 포함될 수 있는 최대 문자 수입니다.

기본값: 255

다음 인덱스 정의는 minutes 컬렉션에서 basicEmailAddressAnalyzer라는 사용자 지정 분석기를 사용하여 page_updated_by.email 필드를 인덱싱합니다. uaxUrlEmail 토크나이저를 사용하여 page_updated_by.email 필드에 있는 URL및 이메일 주소에서 토큰(검색 가능한 텀)을 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 basicEmailAddressAnalyzer을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운 메뉴에서 uaxUrlEmail 을(를) 선택합니다.

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 page_updated_by.email을 선택하고 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 basicEmailAddressAnalyzer 선택합니다.

  10. 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

standard

lewinsky, example.com

uaxUrlEmail

lewinsky@example.com

다음 인덱스 정의는 emailAddressAnalyzer라는 사용자 지정 분석기를 사용하여 minutes collection의 page_updated_by.email 필드를 인덱싱합니다. 다음을 사용합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 emailAddressAnalyzer을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운 메뉴에서 uaxUrlEmail 을(를) 선택합니다.

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭하여 page_updated_by.email 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 page_updated_by.email을 선택하고 Data Type 드롭다운에서 자동 완성을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 emailAddressAnalyzer 선택합니다.

  10. 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

standard

autocomplete edgeGram

le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky, ex, exa, exam, examp, exampl, example, example., example.c, example.co, example.com

uaxUrlEmail

autocomplete edgeGram

le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky@e, lewinsky@ex, lewinsky@exa, lewinsky@exam, lewinsky@examp, lewinsky@exampl

whitespace 토크나이저는 단어 사이의 공백 발생을 기반으로 토큰화합니다.

다음과 같은 속성이 있습니다.

이름
유형
필수 사항입니다.
설명

type

문자열

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 whitespace이어야 합니다.

maxTokenLength

integer

no

단일 토큰의 최대 길이입니다. 이 길이보다 큰 토큰은 maxTokenLength에서 여러 토큰으로 분할됩니다.

기본값: 255

다음 인덱스 정의는 whitespaceExample이라는 사용자 지정 분석기를 사용하여 minutes collection의 message 필드를 인덱싱합니다. whitespace 토크나이저를 사용하여 message 필드의 모든 공백에서 토큰(검색 가능한 용어)을 생성합니다.

  1. Custom Analyzers 섹션에서 Add Custom Analyzer을 클릭합니다.

  2. Create Your Own 라디오 버튼을 선택하고 Next을 클릭합니다.

  3. Analyzer Name 필드에 whitespaceExample을 입력합니다.

  4. 접힌 경우 Tokenizer을(를) 펼칩니다.

  5. 드롭다운 메뉴에서 whitespace 을(를) 선택합니다.

  6. 인덱스에 사용자 지정 분석기를 추가하려면 Add 을 클릭합니다.

  7. Field Mappings 섹션에서 Add Field Mapping을 클릭해 메시지 필드에 사용자 지정 분석기를 적용합니다.

  8. Field Name 드롭다운에서 메시지를 선택한 다음 Data Type 드롭다운에서 문자열을 선택합니다.

  9. 데이터 유형의 속성 섹션에 있는 Index AnalyzerSearch Analyzer 드롭다운에서 whitespaceExample 선택합니다.

  10. Add을(를) 클릭한 다음 Save Changes을(를) 클릭합니다.

기본 인덱스 정의를 다음으로 교체합니다.

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "whitespaceExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "whitespaceExample",
"tokenFilters": [],
"tokenizer": {
"type": "whitespace"
}
}
]
}

다음 message 쿼리는 minutes 컬렉션의 필드에서 용어 SIGN-IN를 검색합니다.

1db.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

standard

do, not, forget, to, sign, in

whitespace

do, not, forget, to, SIGN-IN

돌아가기

문자 필터