自己管理型配置のテキスト検索結果への重みの割り当て
テキスト検索では、インデックス付きフィールドに検索タームを含む各ドキュメントにスコアが割り当てられます。 スコアによって、特定の検索クエリに対するドキュメントの関連性が決まります。
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 Searchはtext
インデックスよりも堅牢なカスタム スコアリングを提供します。 詳しくは、「 Atlas Searchスコアリング」のドキュメントを参照してください。