Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

자동 완성을 위해 필드를 인덱싱하는 방법

이 페이지의 내용

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

Atlas Search autocomplete 유형을 사용하면 자동 완성을 위해 string 필드의 텍스트 값을 인덱스할 수 있습니다. 자동 완성 연산자를 사용하여 autocomplete 유형으로 인덱싱된 필드를 쿼리할 수 있습니다.

autocomplete 유형을 사용하여 인덱싱할 수도 있습니다.

  • 값이 문자열 배열인 필드입니다. 자세한 내용은 배열의 요소를 인덱싱하는 방법을 참조하세요.

  • EmbeddedDocuments 유형으로 인덱싱된 문서 배열 내의 문자열 필드입니다.

자동 완성 연산자를 사용하여 Atlas Search 쿼리를 실행하려는 문서가 많고 데이터가 광범위한 경우, 이 인덱스를 구축하는 데 시간이 걸릴 수 있습니다. 또는 autocomplete 유형만 있는 별도의 인덱스를 만들어 인덱스가 빌드되는 동안 다른 인덱스 및 쿼리에 미치는 영향을 줄일 수 있습니다.

자세한 내용은 Atlas Search 인덱스 성능 고려 사항을 참조하세요.

Atlas Search는 autocomplete유형의 필드를 동적으로 인덱싱하지 않습니다. 정적 매핑을 사용하여 autocomplete 필드를 인덱싱해야 합니다 . Atlas UI의 비주얼 편집기 또는 JSON 편집기를 사용하여 필드를 autocomplete 유형으로 인덱싱할 수 있습니다.

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

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

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

  3. Customized Configuration를 클릭합니다.

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

    참고

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

    필드 이름에 email 또는 url 텀이 포함된 경우 Atlas Search Visual Editor는 이메일 주소나 URL 값을 인덱싱하기 위해 uaxUrlEmail 토크나이저가 포함된 사용자 정의 분석기를 사용할 것을 권장합니다. 필드를 위한 Autocomplete Properties에 사용자 정의 분석기를 생성하고 적용하려면 Create urlEmailAnalyzer를 클릭합니다.

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

  6. (선택 사항) 필드에 대해 Token Properties 을 확장하고 구성합니다. 자세히 알아보려면 token 필드 속성 구성을 참조하십시오.

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

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

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

type

문자열

필수

이 필드 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 문자열이어야 합니다.

analyzer

문자열

옵션

이 자동 완성 매핑에 사용할 분석기의 이름입니다. lucene.kuromoji 언어 분석기와 다음 사용자 지정 분석기 토크나이저 및 토큰 필터를 제외한 모든 Atlas Search 분석기를 사용할 수 있습니다.

lucene.standard

maxGrams

int

옵션

인덱싱된 시퀀스당 최대 문자 수입니다. 이 값은 인덱싱된 토큰의 문자 길이를 제한합니다. maxGrams 값보다 긴 용어를 검색하면 Atlas Search는 토큰을 maxGrams 길이로 자라냅니다.

15

minGrams

int

옵션

인덱싱된 시퀀스당 최소 문자 수입니다. 최소값은 4 를 권장합니다. 4 보다 작은 값은 인덱스 크기가 매우 커질 수 있으므로 성능에 영향을 미칠 수 있습니다. edgeGram에 대해서만 기본값인 2를 권장합니다.

2

tokenization

열거형

옵션

자동 완성을 위해 필드를 인덱싱할 때 사용할 토큰화 전략입니다. 값은 다음 중 하나일 수 있습니다.

  • edgeGram - 이 자동 완성 매핑에서 사용되는 분석기로 구분된 단어의 왼쪽에서 시작하는 가변 길이 문자 시퀀스를 사용하여 grams라고 불리는 인덱스 가능 토큰을 생성합니다.

  • rightEdgeGram - 이 자동 완성 매핑에서 사용되는 분석기로 구분된 단어의 오른쪽에서 시작하는 가변 길이 문자 시퀀스를 사용하여 grams라고 불리는 인덱스 가능 토큰을 생성합니다.

  • nGram - 단어 위로 가변 길이 문자 창을 밀어서 grams라고 하는 인덱스 생성 가능 토큰을 만듭니다. Atlas Search는 edgeGram 또는 rightEdgeGram보다 nGram에 대해 더 많은 토큰을 생성합니다. 따라서 nGram은 필드를 인덱싱하는 데 더 많은 공간과 시간이 소요됩니다. nGram은 긴 복합어가 포함된 언어나 공백을 사용하지 않는 언어를 쿼리하는 데 더 적합합니다.

edgeGram, rightEdgeGram, nGram은 문자 수준에서 적용됩니다. 예를 들어 다음 시나리오를 가정해 보겠습니다.

The quick brown fox jumps over the lazy dog.

minGrams 값을 2로, maxGrams 값을 5로 토큰화하면 Atlas Search는 사용자가 선택한 tokenization 값을 기반으로 다음 문자 시퀀스를 인덱싱합니다.

th
the
the{SPACE}
the q
qu
qui
quic
uick
...
og
dog
{SPACE}dog
y dog
zy
azy
lazy
{SPACE}lazy
he
the
{SPACE}the
r the
er
ver
over
{SPACE}over
...
th
the
the{SPACE}
the q
he
he{SPACE}
he q
he qu
e{SPACE}
e q
e qu
e qui
{SPACE}q
{SPACE}qu
{SPACE}qui
{SPACE}quic
qu
qui
quic
quick
...

edgeGram, rightEdgeGram 또는 nGram 토큰화 전략으로 자동 완성을 위해 필드를 인뎅싱하는 것은 문자열 필드를 인덱싱하는 것보다 계산 비용이 더 많이 듭니다. 이 인덱스는 일반 문자열 필드가 있는 인덱스보다 더 많은 공간을 차지합니다.

지정된 토큰화 전략의 경우, Atlas Search는 다음 프로세스를 적용하여 순차적 토큰을 방출하기 전에 연결합니다. 이 프로세스를 '싱글링'이라고도 합니다. Atlas Search는 minGrams ~ maxGrams 자 길이의 토큰을 방출합니다.

  • 토큰을 minGrams 미만으로 유지합니다.

  • minGrams 보다 크고 maxGrams 보다 작은 토큰을 후속 토큰에 결합하여 지정된 최대 문자 길이까지 토큰을 생성합니다.

edgeGram

foldDiacritics

부울

옵션

인덱스된 텍스트에서 발음 부호를 포함할지 또는 제거할지를 나타내는 플래그입니다. 값은 다음 중 하나일 수 있습니다.

  • true - 인덱스 및 쿼리 텍스트에서 발음 부호를 무시합니다. 발음 부호를 포함하거나 포함하지 않은 결과를 반환합니다. 예를 들어 cafè를 검색하면 cafècafe 문자가 포함된 결과가 반환됩니다.

  • false - 인덱스 및 쿼리 텍스트에 발음 부호 표시를 포함합니다. 쿼리에서 발음 부호가 있든 없든 문자열과 일치하는 결과만 반환합니다. 예를 들어 cafè를 검색하면 cafè 문자가 포함된 결과만 반환됩니다. cafe를 검색하면 cafe 문자가 포함된 결과만 반환됩니다.

true

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

다음 인덱스 정의 예시에서는 title 필드만 autocomplete 유형으로 인덱스하여 자동 완성 연산자를 사용하여 해당 필드에 대한 실시간 검색 쿼리를 지원합니다. 인덱스 정의는 또한 다음을 지정합니다:

  • 표준 분석기를 사용하여 단어 경계를 기준으로 텍스트 값을 텀으로 분류할 수 있습니다.

  • 단어 왼쪽부터 시작하는 문자의 인덱스을 생성하려면 edgeGram 토큰화 전략을 사용하세요.

  • 인덱스된 시퀀스당 최소 3 자를 인덱스합니다.

  • 인덱싱된 시퀀스당 최대 5자를 인덱싱합니다.

  • 인덱스 및 쿼리 텍스트에 발음 부호 표시를 포함합니다.

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

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

  3. 다음과 같이 Autocomplete Properties 을 변경합니다:

    최대 그램

    값을 5(으)로 설정합니다.

    최소 그램

    값을 3(으)로 설정합니다.

    토큰화

    드롭다운에서 edgeGram 을 선택합니다.

    발음 부호 접기

    드롭다운에서 false 을 선택합니다.

  4. 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 자동 완성 연산자를 사용하여 쿼리에 대한 자동 완성을 지원하는 유형입니다.

  • string text, phrase 등의 연산자를 사용하여 텍스트 검색을 지원합니다.

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

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

  3. 다음과 같이 Autocomplete Properties 을 변경합니다:

    최대 그램

    값을 15(으)로 설정합니다.

    최소 그램

    값을 2(으)로 설정합니다.

    토큰화

    드롭다운에서 edgeGram 을 선택합니다.

    발음 부호 접기

    드롭다운에서 false 을 선택합니다.

  4. Add를 클릭합니다.

  5. b부터 d까지의 단계를 반복합니다.

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

  7. 기본값 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을 참조하세요.

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

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

  3. 다음과 같이 Autocomplete Properties 을 변경합니다:

    분석기

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

    최대 그램

    값을 15(으)로 설정합니다.

    최소 그램

    값을 3(으)로 설정합니다.

    토큰화

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

    발음 부호 접기

    드롭다운에서 false 을 선택합니다.

  4. 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}

추가 인덱스 정의에 대한 예시도 참조하세요.

돌아가기

배열