정의
autocompleteautocomplete연산자는 불완전한 입력 문자열에서 문자 시퀀스를 포함하는 단어나 구문을 검색합니다.autocomplete연산자를 사용하여 쿼리하려는 필드는 컬렉션의 인덱스 정의에 있는 자동 완성 데이터 유형으로 인덱싱되어야 합니다. 자동 완성을 위한 인덱스를 구성하는 방법을 알아보려면 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.
참고
MongoDB Search는 단일 문자열에 3개 이상의 단어가 포함된 쿼리에 대해 부정확한 결과를 반환할 수 있습니다.
샘플 사용 사례
입력 시 실시간 검색 애플리케이션에서 autocomplete 연산자를 사용하면 애플리케이션의 검색 필드에 문자가 입력될 때 단어를 더욱 정확하게 예측할 수 있습니다. autocomplete는 자동 완성을 위해 인덱스 정의에 지정된 토큰화 전략을 기반으로 한 예측 단어가 포함된 결과를 반환합니다.
MongoDB Search autocomplete 연산자 사용하여 추천 검색어 또는 드롭다운을 빌드 하려면 추천 검색 컬렉션 쿼리 하거나 과거 검색 를 사용하여 드롭다운을 채우는 것이 좋습니다. 추천 검색 의 컬렉션 별도로 만드는 경우, MongoDB 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 }
옵션
필드 | 유형 | 설명 | 필요성 | 기본값 | ||||
|---|---|---|---|---|---|---|---|---|
| 문자열 또는 문자열 배열 | 검색 할 문자열을 하나 이상 입력합니다. 문자열에 여러 개의 용어가 있는 경우 MongoDB Search는 문자열의 각 텀 에 대해 개별적으로 일치하는 항목을 찾습니다. | 네 | |||||
| 문자열 | 검색할 인덱싱된 필드입니다. 이 필드는
여러 필드에 걸친 | 네 | |||||
| 객체 | 퍼지 검색을 활성화하도록 설정합니다. 검색어 또는 용어와 유사한 문자열을 찾습니다. | no | |||||
fuzzy.maxEdits | integer | 지정된 검색 용어와 일치하는 데 필요한 최대 단일 문자 편집 수입니다. 값은 | no |
| ||||
fuzzy.prefixLength | integer | 정확히 일치해야 하는 결과의 각 용어 시작 부분에 있는 문자 수입니다. | no |
| ||||
fuzzy.maxExpansions | integer | 생성하고 검색할 수 있는 최대 변형 수입니다. 이 한도는 토큰 단위로 적용됩니다. | no |
| ||||
| 객체 | 일치하는 검색어 결과에 할당할 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다:
쿼리에서 | no | |||||
| 문자열 | 토큰을 검색할 순서입니다. 값은 다음 중 하나일 수 있습니다:
| no |
|
채점 동작
기본적으로 autocomplete 연산자는 bm25 유사성 알고리즘을 사용하여 쿼리와의 관련성에 따라 문서의 점수를 평가합니다.
MongoDB 검색 인덱스 정의에서 autocomplete 필드의 similarity.type 속성에 다른 유사도 알고리즘을 지정하여 사용할 유사도 알고리즘을 변경할 수 있습니다. autocomplete 유형에 대한 MongoDB 검색 인덱스를 구성하는 방법은 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.
지원되는 유사성 알고리즘에 대한 자세한 내용은 점수 세부 정보를 참조하세요.
정확히 일치하는 autocomplete 연산자 쿼리 결과는 정확히 일치하지 않는 결과보다 낮은 점수를 받습니다. 자동 완성 인덱싱된 토큰 하위 문자열만 지정하는 경우 MongoDB Search는 쿼리 문자열이 인덱싱된 텍스트와 정확히 일치하는지 확인할 수 없습니다. 정확한 일치의 점수를 높이려면 다음 해결 방법을 시도해 보세요.
참고
하지만, 이 우회 방법이 모든 경우에 정확히 일치하는 결과에 더 높은 점수를 보장하는 것은 아닙니다.
MongoDB Search
autocomplete는autocomplete필드 도string로 인덱싱될 때 정확한 일치 항목을 향상시켜 정확한 일치 항목의 점수를 높입니다.복합 연산자를 사용하여 쿼리합니다.
이 해결 방법의 데모는 여러 필드에서 검색하기 섹션을 참조하세요.
예시
다음 예시에서는 sample_mflix 데이터베이스의 movies 컬렉션을 사용합니다. 클러스터에 샘플 데이터 세트를 로드한 경우 자동 완성을 위한 정적 인덱스를 생성하고 클러스터에서 예시 쿼리를 실행할 수 있습니다.
인덱스 정의
다음 탭에는 edgeGram, rightEdgeGram, nGram 토큰화 전략에 대한 샘플 인덱스 정의가 포함되어 있습니다. 자동 완성 유형 외에도 샘플 인덱스 정의에는 title 필드에 문자열 및 토큰 유형이 포함되어 있습니다.
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "token" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "foldDiacritics": false, 14 "maxGrams": 7, 15 "minGrams": 3, 16 "tokenization": "edgeGram", 17 "type": "autocomplete" 18 } 19 ], 20 "plot": [ 21 { 22 "type": "autocomplete", 23 "tokenization": "edgeGram", 24 "minGrams": 2, 25 "maxGrams": 15, 26 "foldDiacritics": true 27 } 28 ] 29 } 30 } 31 }
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "token" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "foldDiacritics": false, 14 "maxGrams": 7, 15 "minGrams": 3, 16 "tokenization": "rightEdgeGram", 17 "type": "autocomplete" 18 } 19 ], 20 "plot": [ 21 { 22 "type": "autocomplete", 23 "tokenization": "rightEdgeGram", 24 "minGrams": 2, 25 "maxGrams": 15, 26 "foldDiacritics": true 27 } 28 ] 29 } 30 } 31 }
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "token" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "foldDiacritics": false, 14 "maxGrams": 7, 15 "minGrams": 3, 16 "tokenization": "nGram", 17 "type": "autocomplete" 18 } 19 ], 20 "plot": [ 21 { 22 "type": "autocomplete", 23 "tokenization": "nGram", 24 "minGrams": 2, 25 "maxGrams": 15, 26 "foldDiacritics": true 27 } 28 ] 29 } 30 } 31 }
Select your language 드롭다운 메뉴를 사용하여 이 페이지에서 예시의 언어를 설정합니다.
기본 예시
다음 쿼리는 title 필드에 off 문자가 포함된 영화를 검색합니다.
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
퍼지 예시
기본 예시
다음 쿼리는 title 필드에 pre 문자가 포함된 영화를 검색합니다. 쿼리는 다음을 사용합니다.
필드 | 설명 |
| 쿼리를 문서의 단어와 일치시키기 위해 쿼리 문자열 |
| 쿼리를 문서의 단어와 일치시킬 때 쿼리 문자열 |
| 쿼리 문자열을 문서의 단어와 일치시킬 때 |
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
부분 일치 예시
다음 쿼리는 쿼리에 지정한 일련의 문자가 포함된 단어나 구를 특정 필드에서 검색하는 방법을 보여 줍니다.
토큰 주문 예시
다음 쿼리는 title 필드에 men
with 문자가 포함된 영화를 검색합니다. 이 쿼리는 또한 tokenOrder 필드를 사용하여 쿼리가 토큰을 any 순서로 검색할지 또는 sequential 순서로 검색할지를 지정합니다.
예시로 시작
키워드 분석기로 필드를 인덱싱하여 title 필드에서 단어나 문구로 시작하는 영화 제목을 검색할 수 있습니다.
다음 샘플 쿼리 대한 edgeGram 결과를 조회 하려면 토큰화 전략과 함께 키워드 분석기 사용하여 필드 를 인덱스 해야 합니다. 다른 내장 분석기를 사용하여 필드 인덱스 경우 MongoDB Search는 텍스트 필드 단일 텀 로 인덱스 하지 않으므로 결과를 반환하지 않습니다. edgeGram 토큰화 전략은 단어의 왼쪽에서 시작하는 토큰을 생성합니다.
또한 대소문자에 구애받지 않는 결과를 반환하려면 foldDiacritics 를 true 로 설정하다 해야 합니다. foldDiacritics 를 false로 설정하다 경우, 쿼리 텀 의 대소문자가 문서 의 대소문자가 정확히 일치해야 MongoDB Search가 결과를 반환할 수 있습니다.
{ "mappings": { "dynamic": false, "fields": { "title": [ { "type": "token" }, { "type": "string" }, { "foldDiacritics": true, "maxGrams": 7, "minGrams": 3, "analyzer": "lucene.keyword", "tokenization": "edgeGram", "type": "autocomplete" }] } } }
다음 쿼리는 Fast & 단어로 시작하는 영화 제목을 검색합니다.
간단한 any 예시
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
간단한 sequential 예시
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
강조 표시 예시
다음 쿼리는 movies 컬렉션의 title 필드에서 ger 문자를 검색합니다. 이때 title필드에 대해 highlight 옵션을 활성화한 상태에서 문자를 검색합니다.
중요
경로의 자동 완성 인덱싱 버전을 강조 표시하려면 자동 완성 연산자가 쿼리에서 해당 경로를 사용하는 유일한 연산자여야 합니다.
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
여러 필드에서 검색
다음 쿼리는 복합 연산자를 사용하여 movies 컬렉션의 title 및 plot 필드에서 문자열 inter로 시작하는 단어를 검색합니다.
참고
고객의 결과는 다를 수 있음
MongoDB Search는 자동 완성 유형에 대한 인덱스 정의에 구성된 토큰화 전략에 따라 다른 결과를 반환합니다. 자세히 학습 자동 완성을 위해 필드를 인덱싱하는 방법을 참조하세요.
패싯 쿼리를 통한 버킷 결과
자세히 알아보기
자세한 학습 은 자동 완성 및 부분 일치 MongoDB 검색 쿼리를 실행하는 방법을 참조하세요.