Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

효율적인 필터링 및 정렬을 위해 문자열 필드를 인덱싱하는 방법

이 페이지의 내용

  • token 유형의 동작 검토
  • token 0} 유형 제한 검토
  • 0} 유형에 대한 인덱스 정의 token
  • 0}token 필드 속성 구성
  • 0} 유형에 대한 예시를 사용해 보세요.token

Atlas Search token 유형을 사용하여 string 필드를 인덱싱하면 Atlas Search 결과를 정렬할 수 있습니다. 그런 다음 쿼리에서 $search sort 옵션을 사용하여 인덱싱된 필드를 기준으로 결과를 정렬할 수 있습니다. 자세한 내용은 Atlas Search 결과 정렬을 참조하세요 또한 Atlas Search token 유형을 사용하여 $vectorSearch 쿼리가 분석하는 데이터를 사전 필터링하기 위해 string 필드를 인덱싱할 수도 있습니다. 자세한 내용은 Atlas Vector Search 개요를 참조하세요.

다음 연산자를 사용하여 string 필드에 대해 쿼리를 실행하려면 필드를 Atlas Search token 유형으로 인덱싱해야 합니다.

  • 같음

  • 범위

자세한 내용은 각 연산자에 대한 설명서를 참조하세요.

필드를 token 유형으로 인덱싱하면 Atlas Search는 문자열의 텀을 단일 텀(검색 가능한 텀)으로 검색 인덱스하고 효율적인 필터링 또는 정렬 작업을 위해 열 형식 저장소에 저장합니다. 정규화 도구를 사용하여 토큰을 변환할 수 있습니다. 기본적으로 정규화 도구는 none 로 설정되므로 Atlas Search는 문자열을 원래 형식으로 검색 인덱스합니다.

Atlas Search stringtoken 유형의 주요 차이점은 Atlas Search는 string 유형으로 인덱싱된 필드에 대해 하나 이상의 토큰을 생성하는 반면 Atlas Search는 token 유형으로 인덱싱된 필드에 대해 단일 토큰만 생성한다는 것입니다.

token 필드 유형으로 인덱싱되는 문자열이 8181자를 초과하면 Atlas Search는 인덱싱 전에 해당 문자열을 8181자로 자릅니다.

필드를 token 유형으로 인덱싱하는 경우 text, 등과 같은 연산자를 사용하여 텍스트 값을 쿼리하려면 해당 필드를 string 유형으로 인덱싱해야 합니다. 다음 연산자의 경우 필드의 텍스트 값을 쿼리하기 위해 필드를 string 유형으로 인덱싱할 필요도 없습니다.

embeddedDocuments 유형으로 인덱싱된 필드의 하위 항목을 token 유형으로 인덱싱할 수 없습니다.

token 유형에 대한 인덱스를 정의하려면 Atlas UI에서 원하는 구성 방법을 선택한 다음 데이터베이스와 컬렉션을 선택하세요.

  1. 인덱스를 구성하려면 Refine Your Index를 클릭합니다.

  2. Field Mappings 섹션에서 Add Field 을 클릭하여 Add Field Mapping창을 엽니다.

  3. Customized Configuration를 클릭합니다.

  4. Field Name 드롭다운에서 인덱스할 필드를 선택합니다.

    참고

    필드 이름 시작 부분에 달러($) 기호가 포함된 필드는 인덱싱할 수 없습니다.

  5. Data Type 드롭다운을 클릭하여 Token를 선택합니다.

  6. (선택 사항) 필드에 대해 Token Properties를 확장하고 구성합니다. 자세한 내용은 token 필드 속성 구성을 참조하세요.

  7. Add를 클릭합니다.

다음은 token 유형에 대한 JSON 구문입니다. 기본값 인덱스 정의를 다음으로 변경합니다. 필드에 대한 자세한 내용은 필드 속성을 참조하세요.

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "token",
"normalizer": "lowercase | none"
}
}
}
}

Atlas Search token 유형은 다음 매개 변수를 사용합니다.

옵션
유형
필요성
설명
기본값

type

문자열

필수 사항

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

normalizer

문자열

옵션

필드 값에 수행할 변환 유형입니다. 값은 다음 중 하나일 수 있습니다.

  • lowercase - 문자열 필드의 텍스트 값을 소문자로 변환합니다.

  • none - 어떤 변환도 수행하지 않습니다.

이 옵션을 명시적으로 설정하지 않으면 기본값은 none 입니다.

none

다음 인덱스 정의 예시에서는 sample_mflix.movies 컬렉션을 사용합니다. cluster에 이미 샘플 데이터가 로드되어 있는 경우, Atlas UI의 Visual Editor 또는 JSON Editor를 사용하여 인덱스를 구성할 수 있습니다. 원하는 구성 방법을 선택한 후 데이터베이스와 컬렉션을 선택하고 인덱스를 구체화하여 필드 매핑을 추가합니다.

다음 인덱스 정의는 title 필드의 문자열 값을 Atlas Search token 유형으로 인덱싱하고 필드 값을 lowercase 로 변환하여 다음을 수행할 수 있습니다.

  • normalizer 에 지정된 대로 title 필드에서 대소문자를 구분하지 않는 정렬을 수행합니다.

  • 다음 연산자를 사용하여 title 필드에 대해 정확히 일치하는 쿼리를 실행합니다.

  1. Add Field Mapping 창의 Field Name 드롭다운에서 title 을 선택합니다.

  2. Data Type 드롭다운을 클릭하여 Token를 선택합니다.

  3. Token Properties 을 확장하고 Normalizer 드롭다운에서 lowercase 을 선택합니다.

  4. Add를 클릭합니다.

기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "token",
"normalizer": "lowercase"
}
}
}
}

다음 인덱스 정의는 genres 필드를 stringtoken 유형으로 인덱싱하여 다음을 반환합니다.

  • Atlas Search 연산자인 텍스트, 구문, 및 기타 연산자를 사용하여 genres 필드에서 텍스트 검색을 수행하는 쿼리의 검색 결과

  • genres 필드에서 $search 정렬 옵션을 사용하여 쿼리에 대한 결과를 정렬했습니다.

  • Atlas Search 연산자 equals, in, range를 사용한 쿼리에 대한 정확한 일치 항목입니다.

  1. Add Field Mapping 창의 Field Name 드롭다운에서 genres 을 선택합니다.

  2. Data Type 드롭다운을 클릭하여 Token를 선택합니다.

  3. Add를 클릭합니다.

  4. 1 단계를 반복하고 Data Type 드롭다운에서 String을 선택합니다.

  5. String Properties에 대한 기본 설정을 검토하고 Add를 클릭합니다.

기본 인덱스 정의를 다음 인덱스 정의로 바꾸세요.

{
"mappings": {
"dynamic": false,
"fields": {
"genres": [{
"type": "string"
},
{
"type": "token"
}]
}
}
}

돌아가기

문자열 패싯