효율적인 필터링 및 정렬을 위해 문자열 필드를 인덱싱하는 방법
이 페이지의 내용
Atlas Search token
유형을 사용하여 string 필드를 인덱싱하면 Atlas Search 결과를 정렬할 수 있습니다. 그런 다음 쿼리에서 $search
sort
옵션을 사용하여 인덱싱된 필드를 기준으로 결과를 정렬할 수 있습니다. 자세한 내용은 Atlas Search 결과 정렬을 참조하세요 또한 Atlas Search token
유형을 사용하여 $vectorSearch
쿼리가 분석하는 데이터를 사전 필터링하기 위해 string 필드를 인덱싱할 수도 있습니다. 자세한 내용은 Atlas Vector Search 개요를 참조하세요.
다음 연산자를 사용하여 string 필드에 대해 쿼리를 실행하려면 필드를 Atlas Search token
유형으로 인덱싱해야 합니다.
자세한 내용은 각 연산자에 대한 설명서를 참조하세요.
token
유형의 동작 검토
필드를 token
유형으로 인덱싱하면 Atlas Search는 문자열의 텀을 단일 텀(검색 가능한 텀)으로 검색 인덱스하고 효율적인 필터링 또는 정렬 작업을 위해 열 형식 저장소에 저장합니다. 정규화 도구를 사용하여 토큰을 변환할 수 있습니다. 기본적으로 정규화 도구는 none
로 설정되므로 Atlas Search는 문자열을 원래 형식으로 검색 인덱스합니다.
Atlas Search string
와 token
유형의 주요 차이점은 Atlas Search는 string
유형으로 인덱싱된 필드에 대해 하나 이상의 토큰을 생성하는 반면 Atlas Search는 token
유형으로 인덱싱된 필드에 대해 단일 토큰만 생성한다는 것입니다.
token
필드 유형으로 인덱싱되는 문자열이 8181자를 초과하면 Atlas Search는 인덱싱 전에 해당 문자열을 8181자로 자릅니다.
token
유형 제한 검토
필드를 token
유형으로 인덱싱하는 경우 text, 구 등과 같은 연산자를 사용하여 텍스트 값을 쿼리하려면 해당 필드를 string
유형으로 인덱싱해야 합니다. 다음 연산자의 경우 필드의 텍스트 값을 쿼리하기 위해 필드를 string
유형으로 인덱싱할 필요도 없습니다.
embeddedDocuments 유형으로 인덱싱된 필드의 하위 항목을 token
유형으로 인덱싱할 수 없습니다.
token
유형에 대한 인덱스 정의
token
유형에 대한 인덱스를 정의하려면 Atlas UI에서 원하는 구성 방법을 선택한 다음 데이터베이스와 컬렉션을 선택하세요.
인덱스를 구성하려면 Refine Your Index를 클릭합니다.
Field Mappings 섹션에서 Add Field 을 클릭하여 Add Field Mapping창을 엽니다.
Customized Configuration를 클릭합니다.
Field Name 드롭다운에서 인덱스할 필드를 선택합니다.
참고
필드 이름 시작 부분에 달러(
$
) 기호가 포함된 필드는 인덱싱할 수 없습니다.Data Type 드롭다운을 클릭하여 Token를 선택합니다.
(선택 사항) 필드에 대해 Token Properties를 확장하고 구성합니다. 자세한 내용은
token
필드 속성 구성을 참조하세요.Add를 클릭합니다.
다음은 token
유형에 대한 JSON 구문입니다. 기본값 인덱스 정의를 다음으로 변경합니다. 필드에 대한 자세한 내용은 필드 속성을 참조하세요.
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "token", "normalizer": "lowercase | none" } } } }
token
필드 속성 구성
Atlas Search token
유형은 다음 매개 변수를 사용합니다.
옵션 | 유형 | 필요성 | 설명 | 기본값 |
---|---|---|---|---|
| 문자열 | 필수 사항 | 이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 | |
| 문자열 | 옵션 | 필드 값에 수행할 변환 유형입니다. 값은 다음 중 하나일 수 있습니다.
이 옵션을 명시적으로 설정하지 않으면 기본값은 |
|
token
유형에 대한 예시 사용해보기
다음 인덱스 정의 예시에서는 sample_mflix.movies 컬렉션을 사용합니다. cluster에 이미 샘플 데이터가 로드되어 있는 경우, Atlas UI의 Visual Editor 또는 JSON Editor를 사용하여 인덱스를 구성할 수 있습니다. 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 구체화하여 필드 매핑을 추가합니다.
다음 인덱스 정의는 title
필드의 문자열 값을 Atlas Search token
유형으로 인덱싱하고 필드 값을 lowercase
로 변환하여 다음을 수행할 수 있습니다.
normalizer
에 지정된 대로title
필드에서 대소문자를 구분하지 않는 정렬을 수행합니다.다음 연산자를 사용하여
title
필드에 대해 정확히 일치하는 쿼리를 실행합니다.
Add Field Mapping 창의 Field Name 드롭다운에서 title 을 선택합니다.
Data Type 드롭다운을 클릭하여 Token를 선택합니다.
Token Properties 을 확장하고 Normalizer 드롭다운에서
lowercase
을 선택합니다.Add를 클릭합니다.
기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.
{ "mappings": { "dynamic": false, "fields": { "title": { "type": "token", "normalizer": "lowercase" } } } }
다음 인덱스 정의는 genres
필드를 string
및 token
유형으로 인덱싱하여 다음을 반환합니다.
Atlas Search 연산자인 텍스트, 구문, 및 기타 연산자를 사용하여
genres
필드에서 텍스트 검색을 수행하는 쿼리의 검색 결과Atlas Search 연산자 equals, in, range를 사용한 쿼리에 대한 정확한 일치 항목입니다.
Add Field Mapping 창의 Field Name 드롭다운에서 genres 을 선택합니다.
Data Type 드롭다운을 클릭하여 Token를 선택합니다.
Add를 클릭합니다.
1 단계를 반복하고 Data Type 드롭다운에서 String을 선택합니다.
String Properties에 대한 기본 설정을 검토하고 Add를 클릭합니다.
기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.
{ "mappings": { "dynamic": false, "fields": { "genres": [{ "type": "string" }, { "type": "token" }] } } }