Docs Menu
Docs Home
/ /

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

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

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

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

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

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

자세한 학습 은 MongoDB Search 인덱스 성능 고려 사항을 참조하세요.

autocomplete 유형은 기본값 으로 동적 매핑에 포함되지 않습니다. 필드를 autocomplete 유형으로 인덱스 하려면 정적 매핑을 사용하거나 typeSet autocomplete 동적 매핑에 를 포함하도록 를 구성할 수 있습니다.

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

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

type

문자열

필수

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

analyzer

문자열

옵션

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

lucene.standard

maxGrams

int

옵션

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

참고

maxGrams 성능을 최적화하려면 값을 이하로 설정하는 15 것이 좋습니다. 값이 클수록 인덱스 크기가 커지고 성능에 영향 수 있습니다.15 자동 완성에 자가 넘는 문자가 필요한 경우 쿼리가 잘리지 않도록 사용자 지정 분석기 구성하는 것이 좋습니다.

15

minGrams

int

옵션

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

2

tokenization

열거형

옵션

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

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

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

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

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

The quick brown fox jumps over the lazy dog.

minGrams2maxGrams5으로 토큰화하면 MongoDB 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 토큰화 전략으로 자동 완성을 위해 필드를 인뎅싱하는 것은 문자열 필드를 인덱싱하는 것보다 계산 비용이 더 많이 듭니다. 이 인덱스는 일반 문자열 필드가 있는 인덱스보다 더 많은 공간을 차지합니다.

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

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

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

edgeGram

foldDiacritics

부울

옵션

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

  • true - 인덱스 및 쿼리 텍스트에서 발음 부호를 무시하는 등 정규화를 수행합니다. 예시 를 들어 MongoDB Search는 분음 부호가 있거나 없는 결과를 반환하기 때문에 cafè 을 검색 하면 cafècafe 문자가 포함된 결과가 반환됩니다.

  • false - 인덱스 및 쿼리 텍스트에서 발음 부호를 무시하는 등 정규화를 수행하지 않습니다. 따라서 MongoDB Search는 쿼리 에서 발음 부호가 있든 없든 문자열과 일치하는 결과만 반환합니다. 예시 를 들어 cafè 을 검색 하면 cafè 문자가 포함된 결과만 반환됩니다. cafe 를 검색 하면 cafe 문자가 포함된 결과만 반환됩니다.

true

similarity.type

문자열

옵션

autocomplete 연산자로 점수를 매길 때 이 문자열 매핑에 사용할 유사성 알고리즘의 이름입니다. 값은 bm25, boolean, 또는 stableTfl중 하나일 수 있습니다.

사용 가능한 유사성 알고리즘에 대해 자세히 학습 점수 세부 정보를 참조하세요.

bm25

autocomplete 연산자에 대한 자세한 내용과 쿼리 예시를 보려면 자동 완성 기능을 참조하세요.

정규식 표현식을 사용하여 대소문자를 구분하지 않는 접두사, 다음으로시작하는 사람, 다음으로 시작하는 사람,포함하는 쿼리를 실행 방법에 대한 예제는 정규식 쿼리 대신 MongoDB 검색 사용을 참조하세요.

돌아가기

배열

이 페이지의 내용