Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

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

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

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

  • For the $search stage, the score field takes the $meta expression, which requires the searchScore value. You can also specify the searchScoreDetails value for the scoreDetails field $meta expression for a detailed breakdown of the score.

  • For the $vectorSearch stage, the score field takes the $meta expression, which requires the vectorSearchScore value to return the score of each document in your vector search results.

注意

次の URL を使用できます。

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

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

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

次のクエリは、$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])

詳細については、 MongoDB ベクトル検索 Score を参照してください。

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

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

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

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

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

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

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

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

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

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

On separate Search Nodes, each node assigns documents different internal Lucene IDs used for sorting when scores are identical. When sorting and paginating results, the mongot process on the node that is processing the query might include documents from other nodes if their internal IDs have greater pagination order than the token. To prevent this, use $match after $search to exclude documents by their _id.

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

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

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

戻る

検索オプション

項目一覧