AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

結果のドキュメントのスコアをカスタマイズします

結果内のドキュメントのスコアをカスタマイズできます。スコアの計算方法を調整することで、最も関連性の高いドキュメントが検索結果の上位にランク付けされるようにできます。スコアをカスタマイズするさまざまな方法について詳しくは、「結果内のドキュメントにスコアを付ける」を参照してください。このページでは、次の方法を説明します。

  • 結果内のドキュメントのスコアを変更して、結果を引き上げまたは引き下げます。

  • 集計パイプラインのその後の段階で、0から1の範囲で$searchクエリ スコアを正規化します。

MongoDB Search クエリは、返されたすべてのドキュメントに、その関連性に基づいてスコアを割り当てます。結果セットに含まれるドキュメントは、スコアの高い順から低い順へと返されます。詳細については、「結果内のドキュメントにスコアを付ける」を参照してください。

デフォルトのスコアリング動作を変更するには、すべての演算子で次のオプションを使用できます。詳細および例については、次のオプションのいずれかをクリックしてください。

このセクションでは、検索フィールドに重みを付けて、結果や結果のカテゴリーでドキュメントを引き上げまたは引き下げる方法を説明します。具体的には、フィールドに1つ以上の値を割り当てて、スコアを増加または減少させて結果を返す方法を説明します。

動的マッピングを有効にしてインデックスを設定すると、コレクション内のすべてのフィールドにインデックスことができます。あるいは、クエリを行い、結果を並べ替えるフィールドで 静的マッピング を使用します。MongoDB Search インデックスの作成の詳細については、 MongoDB Search インデックスの管理 を参照してください。

サンプルクエリは、結果のドキュメントを昇格または降格させる方法を示しています。複合演算子を使用して、2つ以上の演算子を1つのクエリに結合します。

集計パイプラインのその後の段階で、 0から1の範囲で$searchクエリ スコアを正規化できます。 スコアを正規化するには、 $searchステージの後に以下のステージを次の順序で使用できます。

  • $addFields

    {
    "$addFields": {
    "score": {
    "$meta": "searchScore"
    }
    }
    }
  • $setWindowFields

    {
    "$setWindowFields": {
    "output": {
    "maxScore": {
    "$max": "$score"
    }
    }
    }
    }
  • $addFields

    {
    "$addFields": {
    "normalizedScore": {
    "$divide": [
    "$score", "$maxScore"
    ]
    }
    }
    }
1db.movies.aggregate([{
2 "$search": {
3 "text": {
4 "query": "Helsinki",
5 "path": "plot"
6 }
7 }
8 },
9 {
10 "$limit": 5
11 },
12 {
13 "$project": {
14 "_id": 0,
15 "title": 1,
16 "score": 1,
17 "maxScore": 1,
18 "normalizedScore": 1
19 }
20 },
21 {
22 "$addFields": {
23 "score": {
24 "$meta": "searchScore"
25 }
26 }
27 },
28 {
29 "$setWindowFields": {
30 "output": {
31 "maxScore": {
32 "$max": "$score"
33 }
34 }
35 }
36 },
37 {
38 "$addFields": {
39 "normalizedScore": {
40 "$divide": [
41 "$score", "$maxScore"
42 ]
43 }
44 }
45}])
1[
2 {
3 title: 'Drifting Clouds',
4 score: 4.5660295486450195,
5 maxScore: 4.5660295486450195,
6 normalizedScore: 1
7 },
8 {
9 title: 'Sairaan kaunis maailma',
10 score: 4.041563034057617,
11 maxScore: 4.5660295486450195,
12 normalizedScore: 0.8851372929150143
13 },
14 {
15 title: 'Bad Luck Love',
16 score: 3.6251673698425293,
17 maxScore: 4.5660295486450195,
18 normalizedScore: 0.79394303764817
19 },
20 {
21 title: 'Bad Luck Love',
22 score: 3.6251673698425293,
23 maxScore: 4.5660295486450195,
24 normalizedScore: 0.79394303764817
25 },
26 {
27 title: 'Forbidden Fruit',
28 score: 3.6251673698425293,
29 maxScore: 4.5660295486450195,
30 normalizedScore: 0.79394303764817
31 }
32]

MongoDB Search 結果には次のスコアが含まれています。

  • The modified score for the $search query in the score field from the $addFields stage.

  • The maximum score assigned to the documents in the results in the maxScore field from the $setWindowFields stage.

  • The normalized score in the normalizedScore field from the $addFields stage. MongoDB computes this score by dividing the modified score in $score by the maximum score in $maxScore using $divide.

To learn more about compound queries using MongoDB Search, take Unit 9 of the Intro To MongoDB Course on MongoDB University. The 1.5-hour unit includes an overview of MongoDB Search. The unit also covers creating MongoDB Search indexes, running $search queries using compound operators, and grouping results using facet (MongoDB Search Operator).