Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型配置のテキスト検索結果への重みの割り当て

テキスト検索では、インデックス付きフィールドに検索タームを含む各ドキュメントにスコアが割り当てられます。 スコアによって、特定の検索クエリに対するドキュメントの関連性が決まります。

textインデックスの場合、インデックス付きフィールドの重みは、テキスト検索スコアに関して他のインデックス付きフィールドと比較したフィールドの重要性を示します。

ドキュメント内の各インデックス付きフィールドについて、MongoDB は一致の数に重みを掛けて結果を合計します。 MongoDB はこの合計を使用して、ドキュメントのスコアを計算します。 テキスト スコアによる返却と並べ替えの詳細については、 $meta演算子を参照してください。

インデックス フィールドのデフォルトの重みは 1 です。 インデックス フィールドの重みを調整するには、 db.collection.createIndex()メソッドにweightsオプションを含めます。

警告

インデックスを再作成する必要がないように、重みを慎重に選択してください。

コレクション blogは、次のドキュメントを含みます。

{
_id: 1,
content: "This morning I had a cup of coffee.",
about: "beverage",
keywords: [ "coffee" ]
}
{
_id: 2,
content: "Who doesn't like cake?",
about: "food",
keywords: [ "cake", "food", "dessert" ]
}

contentフィールドとkeywordsフィールドで異なるフィールドの重みを持つtextインデックスを作成するには、 createIndex()メソッドにweightsオプションを含めます。 たとえば、次のコマンドは 3 つのフィールドにインデックスを作成し、のうち 2 つのフィールドに重みを割り当てます。

db.blog.createIndex(
{
content: "text",
keywords: "text",
about: "text"
},
{
weights: {
content: 10,
keywords: 5
},
name: "TextIndex"
}
)

textインデックスには次のフィールドと重みがあります。

  • content の重みは10で、

  • keywords の重みは5で、

  • about のデフォルトの重みは 1 です。

これらの重みは、インデックス フィールドの相互に対する相対的な重要性を示します。 たとえば、 contentフィールドでのターム一致には次のようになります。

  • 2 回(つまり 10:5 )は、 keywordsフィールドのターム一致としての影響と

  • 10 回(つまり 10:1 )は、 aboutフィールドのターム一致としての影響を与えます。

注意

MongoDB Atlas でホストされているデータの場合、 Atlas Searchtextインデックスよりも堅牢なカスタム スコアリングを提供します。 詳しくは、「 Atlas Searchスコアリング」のドキュメントを参照してください。

戻る

テキストインデックスの名前の指定