Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

결과에서 문서 점수 매기기

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

문서의 점수에 영향을 미치는 요소는 다음과 같이 다양합니다:

  • 문서에서 검색어의 위치,

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

  • 쿼리에 사용되는 연산자의 유형

  • 분석기 유형입니다.

참고

배열에서 값을 쿼리할 때, Atlas Search는 배열 내 쿼리와 일치하는 값의 개수에 따라 일치하는 결과의 점수를 수정하지 않습니다. 점수는 배열 내부의 일치 항목 수에 관계없이 단일 일치 항목과 동일합니다.

반환된 문서에 할당된 점수는 문서 메타데이터의 일부입니다. 집계 파이프라인에서 $project 단계를 사용하면 반환된 각 문서의 점수를 결과 세트와 함께 포함할 수 있습니다.

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

$vectorSearch 단계 후, $project 단계에서 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 단계 후에는 내림차순 $sort를 포함할 필요가 없습니다. Atlas Search는 가장 높은 점수부터 가장 낮은 점수 순으로 문서를 반환하기 때문입니다. 그러나 결과의 여러 문서에 동일한 점수가 있는 경우 결과의 문서 순서는 비결정적입니다. 결과가 정해진 순서를 갖도록 하려면 $search 단계에 sort 옵션을 포함하여 고유한 필드별로 결과를 정렬하는 것이 좋습니다. 고유한 필드를 지정하지 않는 경우 Atlas Search는 결과의 점수가 같을 때 기본적으로 결과를 임의로 정렬합니다. sort 옵션을 사용하면 점수별로 결과를 오름차순으로 정렬하여 반환할 수도 있습니다. 자세한 내용은 Atlas Search 결과 정렬점수별 정렬 예시를 참조하세요.

참고

별도의 검색 노드에서는 각 노드가 서로 다른 내부 ID를 가진 문서의 자체 복사본을 가지고 있으며, Lucene은 여러 문서가 동일한 점수를 가질 때 결과를 정렬하는 데 이 ID를 사용합니다. 쿼리를 처리하지 않는 노드의 문서 내부 ID가 페이지 매김 토큰보다 높은 페이지 매김 순서를 가지면 쿼리를 처리하는 노드의 mongot가 결과를 정렬하고 페이지 매김할 때 이를 결과에 포함시킬 수 있습니다. 이를 완화하기 위해 $search이후에 $match를 사용하여 _id로 문서를 제외합니다.

Lucene 점수 산정 알고리즘에 대한 자세한 내용은 Lucene 문서에서 확인할 수 있습니다.

돌아가기

3. 쿼리 경로 구성