구
정의
구문
phrase
의 구문은 다음과 같습니다.
1 { 2 $search: { 3 "index": <index name>, // optional, defaults to "default" 4 "phrase": { 5 "query": "<search-string>", 6 "path": "<field-to-search>", 7 "score": <options>, 8 "slop": <distance-number>, 9 "synonyms": "<synonyms-mapping-name>" 10 } 11 } 12 }
옵션
phrase
은(는) 다음 텀은 사용하여 쿼리를 구성합니다.
필드 | 유형 | 설명 | 필요성 |
---|---|---|---|
| 문자열 또는 문자열 배열 | 검색할 문자열 또는 문자열을 입력합니다. | 네 |
| 문자열 또는 문자열 배열 | 검색 할 인덱싱된 필드 입니다. 검색 할 와일드카드 경로를 지정할 수도 있습니다. 자세한 학습 은 쿼리 경로 구성을 참조하세요. 핵심: 연산자 사용하려면 속성 또는 기본값 인(으)로 설정하다 에서 | 네 |
| integer |
| no |
| 객체 | 일치하는 검색어 결과에 할당할 점수입니다. 다음 옵션을 사용하여 기본 점수를 수정할 수 있습니다.
배열에서 값을 쿼리할 때, Atlas Search는 배열 내 쿼리와 일치하는 값의 개수에 따라 일치하는 결과의 점수를 수정하지 않습니다. 점수는 배열 내부의 일치 항목 수에 관계없이 단일 일치 항목과 동일합니다. 기본 점수를 수정하는 옵션에 대한 자세한 내용은 결과에서 문서 점수 매기기를 참조하세요. | no |
| 문자열 | 동의어를 사용하여 쿼리를 실행하는 데 필요합니다. 인덱스 정의에 있는 동의어 매핑 정의의 이름입니다. 값은 빈 문자열일 수 없습니다. Atlas Search에서 동의어 매핑을 사용하는 쿼리를 실행하는 데 걸리는 시간은 동의어 소스 컬렉션에 있는 문서의 수와 크기에 따라 달라집니다. 예를 들어 매우 적은 수의 동의어 문서를 기반으로 한 동의어 매핑을 사용하는 쿼리는 많은 동의어 문서를 기반으로 한 동의어 매핑을 사용하는 쿼리보다 더 빠를 수 있습니다. | 옵션 |
예시
이 페이지의 예시에서는 sample_mflix
데이터베이스의 movies
컬렉션을 사용합니다. 샘플 데이터세트를 클러스터에 로드한 후 동적 매핑을 사용하여 Atlas Search 인덱스를 생성하고 클러스터에서 예시 쿼리를 실행합니다. 동의어 예제를 시도하려면 sample_mflix
데이터베이스에 synonymous_terms 컬렉션을 추가한 다음
synonyms
매핑 컬렉션으로 인덱스를 정의 해야 합니다.
단일 문구 예시
다음 Atlas Search 예시에서는 title
필드에서 쿼리 문자열 new york
에 대한 기본 검색을 수행합니다. 쿼리에 slop
이 없으므로 slop
값의 기본값은 0
이며, 이는 단어의 위치가 쿼리 문자열과 정확히 일치해야 결과에 포함될 수 있음을 의미합니다. 쿼리에는 다음도 포함됩니다.
예시
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": "new york" 7 } 8 } 9 }, 10 { $limit: 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
1 [ 2 { title: 'New York, New York', score: 6.786321640014648 } 3 { title: 'New York', score: 6.258549213409424 } 4 { title: 'New York Stories', score: 5.3813982009887695 } 5 { title: 'New York Minute', score: 5.3813982009887695 } 6 { title: 'Synecdoche, New York', score: 5.3813982009887695 } 7 { title: 'New York Doll', score: 5.3813982009887695 } 8 { title: 'Little New York', score: 5.3813982009887695 } 9 { title: 'Escape from New York', score: 4.719893455505371 } 10 { title: 'Naked in New York', score: 4.719893455505371 } 11 { title: 'Autumn in New York', score: 4.719893455505371 } 12 ]
여러 구문 예시
다음 Atlas Search 예시에서는 title
필드에서 쿼리 문자열 the man
및 the
moon
에 대한 기본 검색을 수행합니다. 쿼리에 slop
이 없으므로 slop
값의 기본값은 0
이며, 이는 단어의 위치가 쿼리 문자열과 정확히 일치해야 결과에 포함될 수 있음을 의미합니다. 쿼리에는 다음도 포함됩니다.
예시
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": ["the man", "the moon"] 7 } 8 } 9 }, 10 { $limit: 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
1 [ 2 { title: 'The Man in the Moon', score: 4.4830474853515625 }, 3 { title: 'Shoot the Moon', score: 3.252699851989746 }, 4 { title: 'Kick the Moon', score: 3.252699851989746 }, 5 { title: 'The Man', score: 2.8923356533050537 }, 6 { title: 'The Moon and Sixpence', score: 2.8528637886047363 }, 7 { title: 'The Moon Is Blue', score: 2.8528637886047363 }, 8 { title: 'Racing with the Moon', score: 2.8528637886047363 }, 9 { title: 'Mountains of the Moon', score: 2.8528637886047363 }, 10 { title: 'Man on the Moon', score: 2.8528637886047363 }, 11 { title: 'Castaway on the Moon', score: 2.8528637886047363 } 12 ]
Slop 예시
다음 Atlas Search 예시에서는 title
필드에서 쿼리 문자열 men women
에 대한 기본 검색을 수행합니다. query
의 5
내 slop
값은 단어 men
과 women
사이의 이동과 거리를 더 크게 허용합니다. 쿼리에는 $project
단계가 포함되어 있습니다.
title
을(를) 제외한 모든 필드를 제외합니다.score
이라는 필드 추가
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": "men women", 7 "slop": 5 8 } 9 } 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
1 [ 2 { title: 'Men Without Women', score: 3.367523193359375 }, 3 { title: 'Men Vs Women', score: 3.367523193359375 }, 4 { title: 'Good Men, Good Women', score: 2.8529787063598633 }, 5 { title: 'The War Between Men and Women', score: 2.1851978302001953 }, 6 { title: 'Women Without Men', score: 1.9656763076782227 }, 7 { title: 'Women Vs Men', score: 1.9656763076782227 } 8 ]
동의어 예시
다음 쿼리는 movies
컬렉션의 plot
필드에서 지정된 쿼리 문자열의 용어를 검색합니다. Atlas Search는 sample_mflix.movies
컬렉션에 대한 인덱스의 동의어 매핑 정의에 지정된 동의어 소스 컬렉션 synonymous_terms
의 매핑 유형에 따라 결과를 반환합니다.
다음 쿼리는 plot
필드에서 용어 사이의 거리가 최대 5
이내인 automobile race
구문을 검색합니다.
db.movies.aggregate([ { $search: { "phrase": { "path": "plot", "query": "automobile race", "slop": 5, "synonyms": "my_synonyms" } } }, { "$limit": 5 }, { $project: { "_id": 0, "plot": 1, "title": 1, score: { $meta: "searchScore" } } } ])
[ { plot: 'When a popular daredevil proposes an automobile race across three continents, his arch rival vows to beat him, while an ambitious female reporter has her own plans for victory.', title: 'The Great Race', score: 29.569732666015625 }, { plot: 'A wide variety of eccentric competitors participate in a wild and illegal cross-country car race.', title: 'The Cannonball Run', score: 25.50379180908203 }, { plot: 'A mechanic takes his family to a car race and a series of events occur which brings problems, betrayals, violence and the unexpected death of an elderly person.', title: 'National Mechanics', score: 21.538257598876953 }, { plot: "It's time for the annual London to Brighton antique car rally, and Alan McKim and Ambrose Claverhouse are not going to let their friendship stop them from trying to humiliate each other. ...", title: 'Genevieve', score: 20.19266128540039 }, { plot: "A naive drifter runs away from his army father in hopes of making it on the car racing circuit. In Las Vegas, he meets a young scam artist, who develops a crush on him. He is then ...", title: 'Speedway Junky', score: 18.639965057373047 } ]
결과의 문서들은 plot
필드에 다음 텀을 포함하고 있으며, 텀 간의 거리는 최대 5
까지 허용됩니다.
synonymous_terms
컬렉션에서equivalent
동의어로 정의되는automobile
,car
또는vehicle
sy``synonymous_terms`` 컬렉션에서
explicit
동의어로 정의되는race
,contest
또는rally
Atlas Search는 car race
또는 vehicle
race
검색에 대해 유사한 결과를 반환합니다. 이는 automobile
, car
, vehicle
를 equivalent
동의어로 구성했기 때문입니다. 그러나 automobile
contest
에 대한 결과에는 race
또는 rally
가 있는 문서가 포함되지 않으며, automobile rally
에 대한 결과에는race
또는 contest
가 있는 문서가 포함되지 않습니다. 이는 contest
또는 rally
를 용어의 동의어로 구성하지 않았기 때문입니다.