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

結果内のドキュメントのスコアリング

MongoDB Search またはMongoDB ベクトル検索クエリによって返されるすべてのドキュメントには関連性に基づいてスコアが割り当てられ、結果セットに含まれるドキュメントは最高スコアから最低スコアの順に返されます。

各ドキュメントのスコアを検索結果に含めるには、集計パイプラインで $project ステージを使用します。

  • $search ステージでは、score フィールドは $meta 式を受け取り、この式には searchScore 値が必要です。scoreDetails フィールド $meta 式の searchScoreDetails 値を指定し、スコアの詳細な内訳を示すこともできます。

  • $vectorSearchステージでは、score フィールドは $meta 式をとります。これには、ベクトル検索結果内の各ドキュメントのスコアを返すために vectorSearchScore 値が必要です。

注意

次の URL を使用できます。

  • searchScore $search クエリの場合のみ。

  • vectorSearchScore $vectorSearchクエリの場合のみ

他のクエリでsearchScoreおよびvectorSearchScoreを使用すると、MongoDB は MongoDB v8.2 以降で警告をログに記録します。

例

次のクエリは、$project ステージを使用して、返されるドキュメントに score という名前のフィールドを追加します。

db.movies.aggregate([ { "$search": { "text": { <operator-specification> } } }, { "$project": { "<field-to-include>": 1, "<field-to-exclude>": 0, "score": { "$meta": "searchScore" } } }])

返されたドキュメントに割り当てられるスコアは、ドキュメントのメタデータの一部です。集計パイプラインで $project ステージを使用して、返された各ドキュメントのスコアを結果セットに含めることができます。ドキュメントは最高スコアから最低スコアの順に返されます。ドキュメントのスコアに影響を与える要因には、次のようなものがあります。

  • ドキュメント内の検索語の位置。

  • ドキュメント内の検索語の出現頻度。

  • MongoDB Search クエリが使用する 演算子 または アナライザ のタイプ。

Lucene スコアリングアルゴリズムの詳細については、Lucene ドキュメント を参照してください。

デフォルトのスコアリング動作に加えて、 MongoDB Search は次のオプションをサポートしています。

  • 特定のドキュメントに割り当てられたスコアを修正します。

  • スコアの詳細オプションを使用して、スコアの詳細な内訳を返します。

  • 検索スコアを正規化します。

結果内の複数のドキュメントのスコアが同じである場合、結果内のドキュメントの順序は非決定的になります。MongoDB Search の結果を特定の順序で表示したい場合は、 $searchステージで [ 並び替え ] オプションを含め、一意のフィールドで結果を並び替えます。並べ替え オプションを使用して、結果をスコア別に昇順で並べ替えることもできます。詳しくは、 MongoDB検索結果の並べ替え と スコアの例で並べ替える を参照してください。

個別の検索ノードでは、各ノードがドキュメントに異なる内部 Lucene ID を割り当て、スコアが同一の場合にソートに使用します。結果をソートしてページ分けする際、クエリを処理しているノードの mongot プロセスには、内部 ID のページ分け順序がトークンよりも大きい場合、他のノードのドキュメントが含まれる可能性があります。これを防ぐには、$match を $search の後に使用して、_id によってドキュメントを除外します。

配列値をクエリする場合、配列内のクエリに一致する値が多いほど、 MongoDB Search はより高いスコアを割り当てます。

MongoDB Search クエリで追加の score オプションを使用する方法の例については、次のページを参照してください。

一般的なMongoDB Search クエリで scoreフィールドを使用する方法の例については、次のページを参照してください。