MongoDB Search 또는 MongoDB Vector Search 쿼리 에서 반환된 모든 문서 에는 관련성에 따라 점수가 할당되며, 결과 설정하다 에 포함된 문서는 가장 높은 점수부터 가장 낮은 점수 순으로 반환됩니다.
사용법
검색 결과에 각 문서의 점수를 포함하려면 집계 파이프라인에서 $project
단계를 사용하세요.
$search
단계에서score
필드는searchScore
값이 필요한 $meta 표현식을 사용합니다. 또한scoreDetails
필드 $meta 표현식의searchScoreDetails
값을 지정하여 점수에 대한 자세한 분석을 수행할 수 있습니다.$vectorSearch
단계에서,score
필드는 $meta 표현식을 사용하며, 이는vectorSearchScore
값을 필요로 하여 벡터 검색 결과에서 각 문서의 점수를 반환합니다.
예시
다음 쿼리는 $project
단계를 사용하여 반환된 문서에 score
라는 이름의 필드를 추가합니다.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 <operator-specification> 6 } 7 } 8 }, 9 { 10 "$project": { 11 "<field-to-include>": 1, 12 "<field-to-exclude>": 0, 13 "score": { "$meta": "searchScore" } 14 } 15 } 16 ])
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 <operator-specification> 6 }, 7 "scoreDetails": true 8 } 9 }, 10 { 11 "$project": { 12 "<field-to-include>": 1, 13 "<field-to-exclude>": 0, 14 "scoreDetails": { "$meta": "searchScoreDetails" } 15 } 16 } 17 ])
자세한 내용은 점수 상세 정보 반환을 참조하세요.
1 db.movies.aggregate([ 2 { 3 "$vectorSearch": { 4 <query-syntax> 5 } 6 }, 7 { 8 "$project": { 9 "<field-to-include>": 1, 10 "<field-to-exclude>": 0, 11 "score": { "$meta": "vectorSearchScore" } 12 } 13 } 14 ])
자세한 학습은 MongoDB Vector Search 점수를 참조하세요.
행동
반환된 문서에 할당된 점수는 문서 메타데이터의 일부입니다. 집계 파이프라인에서 $project
단계를 사용하여 반환된 각 문서의 점수를 결과 집합과 함께 포함할 수 있습니다. 문서는 가장 높은 점수부터 가장 낮은 점수 순으로 반환됩니다. 문서의 점수에 영향을 미치는 요소는 다음과 같이 다양합니다.
루센 점수 알고리즘에 대해 자세히 학습하려면 루센 문서를 참조하세요.
추가 옵션
기본값 채점 동작 외에도 MongoDB Search는 다음 옵션을 지원합니다.
고려 사항
결과의 여러 문서에 동일한 점수가 있는 경우 결과의 문서 순서는 비결정적입니다. MongoDB Search 결과가 정해진 순서를 갖도록 하려면 단계에 $search
정렬 옵션을 포함하여 고유한 필드 기준으로 결과를 정렬합니다. 정렬 옵션을 사용하여 결과를 점수별로 오름차순으로 정렬하여 반환할 수도 있습니다. 자세히 학습 MongoDB 검색 결과 정렬 및 점수별 정렬 예시를 참조하세요.
별도의 검색 노드에서는 각 노드가 점수가 동일할 때 정렬에 사용되는 서로 다른 내부 Lucene ID를 문서에 할당합니다. 결과를 정렬하고 페이지 매김할 때, 쿼리를 처리하는 노드의 mongot
프로세스는 내부 ID가 토큰보다 높은 페이지 매김 순서를 가진 다른 노드의 문서를 포함할 수 있습니다. 이를 방지하려면 $search
이후에 $match
를 사용하여 문서를 _id
로 제외합니다.
배열 값을 쿼리할 때 MongoDB Search는 배열 에서 쿼리 와 일치하는 값의 수에 관계없이 동일한 점수를 할당합니다.