문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ / / /

자동 완성 기능

이 페이지의 내용

  • 정의
  • 샘플 사용 사례
  • 구문
  • 옵션
  • 채점 동작
  • 예제
  • 인덱스 정의
  • Atlas 에서 프로젝트의 Clusters 페이지로 Go 합니다.
  • 클러스터의 Atlas Search 페이지로 이동합니다.
  • 쿼리 구문을 보고 수정합니다.
  • 기본 예시
  • 퍼지 예제
  • 토큰 주문 예제
  • 예시로 시작
  • 간단한 any 예제
  • 간단한 sequential 예제
  • 강조 표시 예제
  • 여러 필드에서 검색
  • 패싯 쿼리를 통한 버킷 결과
autocomplete

자동 완성 연산자는 불완전한 입력 문자열에서 일련의 문자가 포함된 단어나 구를 검색합니다. autocomplete 연산자를 사용하여 쿼리하려는 필드는 컬렉션의 인덱스 정의에서 자동 완성 데이터 유형으로 인덱싱되어야 합니다.

참고

Atlas Search는 단일 문자열에 세 개 이상의 단어가 포함된 쿼리에 대해 부정확한 결과를 반환할 수 있습니다.

입력 시 실시간 검색 애플리케이션에서 autocomplete 연산자를 사용하면 애플리케이션의 검색 필드에 문자가 입력될 때 단어를 더욱 정확하게 예측할 수 있습니다. autocomplete는 자동 완성을 위해 인덱스 정의에 지정된 토큰화 전략을 기반으로 한 예측 단어가 포함된 결과를 반환합니다.

Atlas Search 자동 완성 연산자를 사용하여 추천 검색어 또는 드롭다운을 작성하려면 추천 검색어 컬렉션을 쿼리하거나 과거 검색어를 사용하여 드롭다운을 채우는 것이 좋습니다. 추천 검색어의 컬렉션을 별도로 만드는 경우, Atlas Search 인덱스에서 동의어 매핑을 정의 하여 컬렉션에서 정확한 단어 또는 대체 단어를 검색할 수 있습니다. 검색어를 추적 하고 검색어에 대한 지표 를 확인하여 컬렉션을 구축할 수 있습니다.

autocomplete 의 구문은 다음과 같습니다:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "autocomplete": {
5 "query": "<search-string>",
6 "path": "<field-to-search>",
7 "tokenOrder": "any|sequential",
8 "fuzzy": <options>,
9 "score": <options>
10 }
11 }
12}
필드
유형
설명
필요성
기본값
query
문자열 또는 문자열 배열
검색할 문자열을 하나 이상 입력합니다. 한 문자열에 여러 개의 용어가 있는 경우 Atlas Search는 문자열의 각 용어에 대해 개별적으로 일치하는 항목을 찾습니다.
path
문자열

검색할 필드의 인덱스화된 자동 완성 유형입니다.

다음도 참조하세요.

참고

autocomplete 연산자는 필드 경로에서 multi 를 지원하지 않습니다. 또한 path 의 값으로 필드 배열이나 와일드카드(*)를 지원하지 않습니다. 자세한 내용은 경로 구성 을 참조하세요. 여러 필드에 걸친 autocomplete 연산자 쿼리의 예는 여러 필드에 걸친 검색 또는 튜토리얼의 고급 예제를 참조하세요.

fuzzy
객체
퍼지 검색을 사용하도록 설정합니다. 검색어 또는 용어와 유사한 문자열을 찾습니다.
아니
fuzzy
.maxEdits
integer
지정된 검색 용어와 일치하는 데 필요한 최대 단일 문자 편집 수입니다. 값은 1 또는 2일 수 있습니다.
아니
2
fuzzy
.prefixLength
integer
정확히 일치해야 하는 결과의 각 용어 시작 부분에 있는 문자 수입니다.
아니
0
fuzzy
.maxExpansions
integer
생성하고 검색할 수 있는 최대 변형 수입니다. 이 한도는 토큰 단위로 적용됩니다.
아니
50
score
객체

일치하는 검색어 결과에 할당할 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다:

boost
결과 점수에 주어진 숫자를 곱합니다.
constant
결과 점수를 주어진 숫자로 바꿉니다.
function
결과 점수를 주어진 표현식으로 바꿉니다.

쿼리에서 score 사용에 대한 자세한 내용은 결과에서 문서 채점하기를 참조하십시오.

참고

autocomplete 쿼리 실행 속도가 빨라지는 대신 점수 정확도가 떨어집니다.

자세히 알아보려면 채점 동작을 참조하세요.

아니
tokenOrder
문자열

토큰을 검색할 순서입니다. 값은 다음 중 하나일 수 있습니다:

any
쿼리의 토큰이 문서에서 어떤 순서로든 나타날 수 있음을 나타냅니다. 결과에는 토큰이 순차적으로 또는 비순차적으로 표시되는 문서가 포함됩니다. 그러나 토큰이 순차적으로 나타나는 결과는 다른 비순차적 값보다 높은 점수를 얻습니다.
sequential
쿼리의 토큰이 서로 인접해 있거나 문서의 쿼리에 지정된 순서대로 나타나야 함을 나타냅니다. 결과에는 토큰이 순차적으로 나타나는 문서만 포함됩니다.
아니
any

autocomplete연산자로 쿼리된 결과 중 정확히 일치하는 결과는 정확히 일치하지 않는 결과보다 낮은 점수를 받습니다. 자동 완성 인덱싱된 토큰의 하위 문자열만 지정된 경우, Atlas Search는 쿼리 문자열이 인덱싱된 텍스트와 정확히 일치하는지 여부를 판단할 수 없습니다. 정확한 일치의 점수를 높이려면 다음과 같은 해결 방법을 시도해 볼 수 있습니다.

참고

하지만, 이 우회 방법이 모든 경우에 정확히 일치하는 결과에 더 높은 점수를 보장하는 것은 아닙니다.

  1. 필드를 자동 완성문자열 유형으로 인덱싱합니다.

    Atlas Search의 autocompleteautocomplete 필드가 string으로도 인덱싱되어 있을 때 정확한 일치 항목을 강화하여, 일치 항목의 점수를 증가시킵니다.

  2. 복합 연산자를 사용하여 쿼리합니다.

이 해결 방법의 데모는 여러 필드에서 검색하기 섹션을 참조하세요.

다음 예제에서는 sample_mflix 데이터베이스의 movies 컬렉션을 사용합니다. 클러스터에 샘플 데이터 세트를 로드한 경우 자동 완성을 위한 정적 인덱스를 생성하고 클러스터에서 예제 쿼리를 실행할 수 있습니다.

샘플 데이터 집합을 이미 로드한 경우, Atlas Search 시작하기 자습서에 따라 인덱스 정의를 만들고 Atlas Search 쿼리를 실행하세요.

다음 탭에는 edgeGram, rightEdgeGram, nGram 토큰화 전략에 대한 샘플 인덱스 정의가 포함되어 있습니다. 자동 완성 유형 외에도 샘플 인덱스 정의에는 title 필드에 문자열stringFacet 유형이 포함되어 있습니다.


Select your language 드롭다운 메뉴를 사용하여 이 페이지에서 예시의 언어를 설정합니다.


다음 쿼리는 title 필드에 off 문자가 포함된 영화를 검색합니다.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

다음 쿼리는 title 필드에 pre 문자가 포함된 영화를 검색합니다. 쿼리는 다음을 사용합니다.

필드
설명
maxEdits
쿼리를 문서의 단어와 일치시키기 위해 쿼리 문자열 pre에 하나의 문자 변형만 허용됨을 나타냅니다.
prefixLength
쿼리를 문서의 단어와 일치시킬 때 쿼리 문자열 pre 의 첫 번째 문자가 변경될 수 없음을 나타냅니다.
maxExpansions
쿼리 문자열을 문서의 단어와 일치시킬 때 pre에 대해 최대 256개의 유사한 용어를 고려할 수 있음을 나타냅니다.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

다음 쿼리는 title 필드에 men with 문자가 포함된 영화를 검색합니다. 이 쿼리는 또한 tokenOrder 필드를 사용하여 쿼리가 토큰을 any 순서로 검색할지 또는 sequential 순서로 검색할지를 지정합니다.

키워드 분석기로 필드를 인덱싱하여 title 필드에서 단어나 문구로 시작하는 영화 제목을 검색할 수 있습니다.

다음 샘플 쿼리에 대한 결과를 검색하려면 edgeGram 토큰화 전략과 함께 키워드 분석기 를 사용하여 필드를 인덱싱해야 합니다. 다른 내장 분석기 를 사용하여 필드를 인덱싱하는 경우 Atlas Search는 텍스트 필드를 단일 용어로 인덱싱하지 않으므로 결과를 반환하지 않습니다. edgeGram 토큰화 전략은 단어의 왼쪽에서 시작하는 토큰을 생성합니다.

또한 대소문자에 구애받지 않는 결과를 반환하려면 foldDiacriticstrue 로 설정해야 합니다. foldDiacriticsfalse 로 설정한 경우, 쿼리 용어의 대소문자가 문서의 대소문자가 정확히 일치해야 Atlas Search가 결과를 반환할 수 있습니다.

{
"mappings": {
"dynamic": false,
"fields": {
"title": [
{
"type": "stringFacet"
},
{
"type": "string"
},
{
"foldDiacritics": true,
"maxGrams": 7,
"minGrams": 3,
"analyzer": "lucene.keyword",
"tokenization": "edgeGram",
"type": "autocomplete"
}]
}
}
}

다음 쿼리는 Fast & 단어로 시작하는 영화 제목을 검색합니다.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

다음 쿼리는 movies 컬렉션의 title 필드에서 ger 문자를 검색합니다. 이때 title필드에 대해 highlight 옵션을 활성화한 상태에서 문자를 검색합니다.

중요

경로의 자동 완성 인덱싱 버전을 강조 표시하려면 자동 완성 연산자가 쿼리에서 해당 경로를 사용하는 유일한 연산자여야 합니다.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

다음 쿼리는 복합 연산자를 사용하여 movies 컬렉션의 titleplot 필드에서 문자열 inter로 시작하는 단어를 검색합니다.

참고

고객의 결과는 다를 수 있음

Atlas Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.

← 2. 연산자 및 수집기 사용
복합 →