자동 완성을 위해 필드를 인덱싱하는 방법
Atlas Search autocomplete
유형을 사용하면 자동 완성을 위해 string 필드의 텍스트 값을 인덱스할 수 있습니다. 자동 완성 연산자를 사용하여 autocomplete
유형으로 인덱싱된 필드를 쿼리할 수 있습니다.
autocomplete
유형을 사용하여 인덱싱할 수도 있습니다.
값이 문자열 배열인 필드입니다. 자세한 내용은 배열의 요소를 인덱싱하는 방법을 참조하세요.
EmbeddedDocuments 유형으로 인덱싱된 문서 배열 내의 문자열 필드입니다.
팁
자동 완성 연산자를 사용하여 Atlas Search 쿼리를 실행하려는 문서가 많고 데이터가 광범위한 경우, 이 인덱스를 구축하는 데 시간이 걸릴 수 있습니다. 또는 autocomplete
유형만 있는 별도의 인덱스를 만들어 인덱스가 빌드되는 동안 다른 인덱스 및 쿼리에 미치는 영향을 줄일 수 있습니다.
자세한 내용은 Atlas Search 인덱스 성능 고려 사항을 참조하세요.
Atlas Search는 autocomplete
유형의 필드를 동적으로 인덱싱하지 않습니다. 정적 매핑을 사용하여 autocomplete
필드를 인덱싱해야 합니다 . Atlas UI의 비주얼 편집기 또는 JSON 편집기를 사용하여 필드를 autocomplete
유형으로 인덱싱할 수 있습니다.
autocomplete
유형에 대한 인덱스 정의
autocomplete
유형에 대한 인덱스를 정의하려면 Atlas UI에서 원하는 구성 방법을 선택한 다음 데이터베이스와 컬렉션을 선택하세요.
인덱스를 구성하려면 Refine Your Index를 클릭합니다.
Field Mappings 섹션에서 Add Field 을 클릭하여 Add Field Mapping창을 엽니다.
Customized Configuration를 클릭합니다.
Field Name 드롭다운에서 인덱스할 필드를 선택합니다.
참고
필드 이름 시작 부분에 달러(
$
) 기호가 포함된 필드는 인덱싱할 수 없습니다.필드 이름에
email
또는url
텀이 포함된 경우 Atlas Search Visual Editor는 이메일 주소나 URL 값을 인덱싱하기 위해 uaxUrlEmail 토크나이저가 포함된 사용자 정의 분석기를 사용할 것을 권장합니다. 필드를 위한 Autocomplete Properties에 사용자 정의 분석기를 생성하고 적용하려면 Create urlEmailAnalyzer를 클릭합니다.Data Type 드롭다운을 클릭하여 Autocomplete를 선택합니다.
(선택 사항) 필드에 대해 Token Properties 을 확장하고 구성합니다. 자세히 알아보려면
token
필드 속성 구성을 참조하십시오.Add를 클릭합니다.
다음은 autocomplete
유형에 대한 JSON 구문입니다. 기본값 인덱스 정의를 다음으로 변경합니다. 필드에 대해 자세히 알아보려면 필드 속성을 참조하세요.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<field-name>": { 6 "type": "autocomplete", 7 "analyzer": "<lucene-analyzer>", 8 "tokenization": "edgeGram|rightEdgeGram|nGram", 9 "minGrams": <2>, 10 "maxGrams": <15>, 11 "foldDiacritics": true|false 12 } 13 } 14 } 15 }
autocomplete
필드 속성 구성
Atlas Search autocomplete
유형은 다음 매개 변수를 사용합니다.
옵션 | 유형 | 필요성 | 설명 | 기본값 | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 문자열 | 필수 | 이 필드 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 문자열이어야 합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||
| 문자열 | 옵션 | 이 자동 완성 매핑에 사용할 분석기의 이름입니다. |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| int | 옵션 | 인덱싱된 시퀀스당 최대 문자 수입니다. 이 값은 인덱싱된 토큰의 문자 길이를 제한합니다. |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| int | 옵션 | 인덱싱된 시퀀스당 최소 문자 수입니다. 최소값은 |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 열거형 | 옵션 | 자동 완성을 위해 필드를 인덱싱할 때 사용할 토큰화 전략입니다. 값은 다음 중 하나일 수 있습니다.
지정된 토큰화 전략의 경우, Atlas Search는 다음 프로세스를 적용하여 순차적 토큰을 방출하기 전에 연결합니다. 이 프로세스를 '싱글링'이라고도 합니다. Atlas Search는
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 부울 | 옵션 | 인덱스된 텍스트에서 발음 부호를 포함할지 또는 제거할지를 나타내는 플래그입니다. 값은 다음 중 하나일 수 있습니다.
|
|
autocomplete
유형에 대한 예시 사용해보기
다음 인덱스 정의 예시에서는 sample_mflix.movies 컬렉션을 사용합니다. cluster에 이미 샘플 데이터가 로드되어 있는 경우, Atlas UI의 Visual Editor 또는 JSON Editor를 사용하여 인덱스를 구성할 수 있습니다. 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 구체화하여 필드 매핑을 추가합니다.
다음 인덱스 정의 예시에서는 title
필드만 autocomplete
유형으로 인덱스하여 자동 완성 연산자를 사용하여 해당 필드에 대한 실시간 검색 쿼리를 지원합니다. 인덱스 정의는 또한 다음을 지정합니다:
표준 분석기를 사용하여 단어 경계를 기준으로 텍스트 값을 텀으로 분류할 수 있습니다.
단어 왼쪽부터 시작하는 문자의 인덱스을 생성하려면
edgeGram
토큰화 전략을 사용하세요.인덱스된 시퀀스당 최소
3
자를 인덱스합니다.인덱싱된 시퀀스당 최대
5
자를 인덱싱합니다.인덱스 및 쿼리 텍스트에 발음 부호 표시를 포함합니다.
Add Field Mapping 창의 Field Name 드롭다운에서 title 을 선택합니다.
Data Type 드롭다운을 클릭하여 Autocomplete를 선택합니다.
다음과 같이 Autocomplete Properties 을 변경합니다:
최대 그램
값을
5
(으)로 설정합니다.최소 그램
값을
3
(으)로 설정합니다.토큰화
드롭다운에서
edgeGram
을 선택합니다.발음 부호 접기
드롭다운에서
false
을 선택합니다.Add를 클릭합니다.
기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "autocomplete", 7 "analyzer": "lucene.standard", 8 "tokenization": "edgeGram", 9 "minGrams": 3, 10 "maxGrams": 5, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }
다음 인덱스 정의 예시에서는 sample_mflix.movies 컬렉션을 사용합니다. cluster에 이미 샘플 데이터가 로드되어 있는 경우, Atlas UI의 Visual Editor 또는 JSON Editor를 사용하여 인덱스를 구성할 수 있습니다. 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 구체화하여 필드 매핑을 추가합니다.
배열에 다른 유형을 지정하여 필드를 다른 유형으로 인덱싱할 수도 있습니다. 예를 들어 다음 인덱스 정의는 title
필드를 다음 유형으로 인덱싱합니다.
autocomplete
자동 완성 연산자를 사용하여 쿼리에 대한 자동 완성을 지원하는 유형입니다.
Add Field Mapping 창의 Field Name 드롭다운에서 title 을 선택합니다.
Data Type 드롭다운을 클릭하여 Autocomplete를 선택합니다.
다음과 같이 Autocomplete Properties 을 변경합니다:
최대 그램
값을
15
(으)로 설정합니다.최소 그램
값을
2
(으)로 설정합니다.토큰화
드롭다운에서
edgeGram
을 선택합니다.발음 부호 접기
드롭다운에서
false
을 선택합니다.Add를 클릭합니다.
b부터 d까지의 단계를 반복합니다.
Data Type 드롭다운을 클릭하여 String를 선택합니다.
기본값 String Properties 설정을 수락하고 Add를 클릭합니다.
기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "title": [ 6 { 7 "type": "autocomplete", 8 "analyzer": "lucene.standard", 9 "tokenization": "edgeGram", 10 "minGrams": 2, 11 "maxGrams": 15, 12 "foldDiacritics": false 13 }, 14 { 15 "type": "string" 16 } 17 ] 18 } 19 } 20 }
다음 인덱스 정의 예시에서는 sample_mflix.users 컬렉션을 사용합니다. 클러스터에 이미 샘플 데이터가 로드되어 있는 경우 Atlas UI의 Visual Editor 또는 JSON Editor를 사용하여 인덱스를 구성할 수 있습니다. 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 구체화하여 필드 매핑을 추가합니다.
다음 인덱스 정의 예시에서는 email
필드만 autocomplete
유형으로 인덱스하여 자동 완성 연산자를 사용하여 해당 필드에 대한 실시간 검색 쿼리를 지원합니다. 인덱스 정의는 다음을 지정합니다.
키워드 분석기를 사용하여 문자열 또는 문자열 배열을 매개변수로 받아들이고 단일 용어(토큰)로 인덱싱합니다.
nGram 토크나이저를 사용하여 텍스트를 주어진 크기의 덩어리 또는 'n-그램'으로 토큰화합니다.
인덱스된 시퀀스당 최소
3
자를 인덱스합니다.인덱싱된 시퀀스당 최대
15
자를 인덱싱합니다.인덱스 및 쿼리 텍스트에 발음 부호 표시를 포함합니다.
또한 uaxUrlEmail
토크나이저를 사용하여 URL과 이메일 주소를 토큰화할 수 있습니다. 자세한 내용은 uaxUrlEmail을 참조하세요.
Add Field Mapping 창의 Field Name 드롭다운에서 email 을 선택합니다.
Data Type 드롭다운을 클릭하여 Autocomplete를 선택합니다.
다음과 같이 Autocomplete Properties 을 변경합니다:
분석기
드롭다운 메뉴에서 lucene.keyword 을(를) 선택합니다.
최대 그램
값을
15
(으)로 설정합니다.최소 그램
값을
3
(으)로 설정합니다.토큰화
드롭다운 메뉴에서 nGram 을(를) 선택합니다.
발음 부호 접기
드롭다운에서
false
을 선택합니다.Add를 클릭합니다.
기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.
1 { 2 "mappings": { 3 "dynamic": true, 4 "fields": { 5 "email": { 6 "type": "autocomplete", 7 "analyzer": "lucene.keyword", 8 "tokenization": "nGram", 9 "minGrams": 3, 10 "maxGrams": 15, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }