Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
Atlas
/ / / /

결과에서 문서 점수 매기기

Atlas Search 또는 Atlas Vector Search 쿼리가 반환하는 모든 문서에는 관련성에 따른 점수가 할당되고 결과 세트에 포함된 문서는 가장 높은 점수에서 낮은 점수 순으로 반환됩니다.

검색 결과에 각 문서의 점수를 포함하려면 집계 파이프라인에서 $project 단계를 사용하세요.

  • $search 단계에서 score 필드는 searchScore 값이 필요한 $meta 표현식을 사용합니다. 또한 scoreDetails 필드 $meta 표현식의 searchScoreDetails 값을 지정하여 점수에 대한 자세한 분석을 수행할 수 있습니다.

    참고

    검색 노드를 배포한 경우 다음을 고려합니다.

    • searchScore로 결과를 정렬하는 것은 검색 노드마다 값이 다를 수 있으므로 피하세요.

    • searchScore를 계산하기 위해 호스트는 인덱스에서 아직 제거되지 않은 삭제된 문서를 포함하여 해당 호스트에 존재하는 모든 문서를 고려합니다. 삭제는 각 호스트에서 독립적으로 발생하므로 쿼리가 라우팅되는 호스트에 따라 searchScore에 변화가 생길 수 있습니다.

    검색 노드에서 searchScore에 따라 정렬할 때 페이지 매김을 지원하려면 MongoDB 피드백 엔진에서 이 요청에 대해 찬성 투표를 하세요.

  • $vectorSearch 단계에서, score 필드는 $meta 표현식을 사용하며, 이는 vectorSearchScore 값을 필요로 하여 벡터 검색 결과에서 각 문서의 점수를 반환합니다.

예시

다음 쿼리는 $project 단계를 사용하여 반환된 문서에 score라는 이름의 필드를 추가합니다.

1db.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])
1db.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])

자세한 내용은 점수 상세 정보 반환을 참조하세요.

1db.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])

자세한 내용은 Atlas Vector Search Score를 참조하세요.

반환된 문서에 할당된 점수는 문서 메타데이터의 일부입니다. 집계 파이프라인에서 $project 단계를 사용하여 반환된 각 문서의 점수를 결과 집합과 함께 포함할 수 있습니다. 문서는 가장 높은 점수부터 가장 낮은 점수 순으로 반환됩니다. 문서의 점수에 영향을 미치는 요소는 다음과 같이 다양합니다.

  • 문서에서 검색어의 위치입니다.

  • 문서에서 검색어의 발생 빈도입니다.

  • Atlas Search 쿼리가 사용하는 연산자 또는 분석기의 유형입니다.

Lucene 점수 산정 알고리즘에 대해 더 알고 싶다면 Lucene 문서를 참조하세요.

기본값 점수 산정 동작 외에도 Atlas Search는 다음 옵션을 지원합니다.

  • 특정 문서에 할당된 점수를 수정합니다.

  • 점수 세부 정보 옵션을 사용하여 점수의 세부 분석을 반환합니다.

  • 검색 점수를 정규화합니다.

결과에서 여러 문서가 동일한 점수를 가지는 경우, 결과에 있는 문서의 순서는 비결정적입니다. Atlas Search 결과에 정해진 순서를 부여하려면, 정렬 옵션을 $search 단계에 포함하여 고유 필드별로 결과를 정렬하세요. 정렬 옵션을 사용하면 점수별로 결과를 오름차순으로 정렬하여 반환할 수도 있습니다. 자세한 내용은 Atlas Search 결과 정렬점수별 정렬 예시를 참조하세요.

별도의 검색 노드에서는 각 노드가 점수가 동일할 때 정렬에 사용되는 서로 다른 내부 Lucene ID를 문서에 할당합니다. 결과를 정렬하고 페이지 매김할 때, 쿼리를 처리하는 노드의 mongot 프로세스는 내부 ID가 토큰보다 높은 페이지 매김 순서를 가진 다른 노드의 문서를 포함할 수 있습니다. 이를 방지하려면 $search 이후에 $match를 사용하여 문서를 _id로 제외합니다.

배열 값을 쿼리할 때, Atlas Search는 쿼리와 일치하는 배열 내 값의 수와 관계없이 동일한 점수를 부여합니다.

Atlas Search 검색 쿼리에서 추가 score 옵션을 사용하는 방법에 대한 예시는 다음 페이지를 참조하세요.

일반적인 Atlas Search 쿼리에서 score 필드를 사용하는 방법에 대한 예시는 다음 페이지를 참조하세요.

돌아가기

검색 옵션

이 페이지의 내용