注意
このページでは、自己管理型(Atlas以外)デプロイメントのテキスト クエリ機能について説明します。 MongoDB Atlasでホストされているデータに対して、 MongoDB は改良された全文クエリ ソリューションである Atlas Search とベクトル検索ソリューションである Atlas ベクトル検索 を提供します。
テキスト インデックスは、string コンテンツを持つフィールドでの テキスト検索クエリをサポートします。インデックスを使用すると、特定の単語または文字列を検索するときのパフォーマンスが向上します。
コレクションに含められる テキストインデックスは 1 つ だけですが、そのインデックスには複数のフィールドを含めることができます。
テキストインデックスを作成するには、次のプロトタイプを使用します。
db.<collection>.createIndex( { <field1>: "text", <field2>: "text", ... } )
$text クエリ サポート
テキスト インデックスは、自己管理型配置で $text クエリをサポートします。$text を使用するには、テキストインデックスを作成する必要があります。
ユースケース
オンライン ショップの clothingコレクションには、各アイテムを説明する string を含む descriptionフィールドがあります。"silk" で作られた服を検索するには、description にテキストインデックスを作成し、"silk" に対して $text クエリを実行します。検索では、description の "silk" が含まれるすべてのドキュメントが返されます。
はじめる
テキストインデックスの作成方法と使用方法については、以下を参照してください。
詳細
このセクションでは、テキストインデックスの詳細について説明します。
複合テキストインデックス
テキストインデックスのキーと他のキーの型を持つ複合インデックスでは、インデックスがドキュメントを参照するかどうかは、テキストインデックスのフィールドのみで決定されます。その他のキーはドキュメント参照に影響を与えません。
カバード クエリ
sparse プロパティ
テキストインデックスは常に スパース です。MongoDB はテキスト インデックスの作成時に sparse オプションを無視します。
MongoDB、 テキストインデックスのフィールドがない、null 値を持つ、または空の配列を持つドキュメントのテキストインデックスエントリは追加されません。
ストレージ要件とパフォーマンスのコスト
テキストインデックスには、次のようなストレージとパフォーマンスの特性があります。
テキストインデックスは大量のRAMを消費する可能性があります。各ドキュメントの各インデックス付きフィールドには、それぞれ一意の語幹付き単語ごとに 1 つのインデックスエントリが含まれます。
テキストインデックスの作成は、大規模な マルチキーインデックス の作成と似ていますが、同じデータに対して順序付き(スカラー)インデックスを作成するよりも時間がかかります。
大規模なテキストインデックスを作成する場合は、ファイル記述子を十分に制限してください。推奨設定 を参照してください。
テキストインデックスは書き込みパフォーマンスに影響。これは、 MongoDB が新しいドキュメントの各インデックス付きフィールドに、一意の語幹付き単語にインデックスエントリを追加する必要があるためです。
テキストインデックスは、複数単語の string や単語の近接性情報ではなく、個々の単語を保存します。複数の単語を含むクエリは、コレクション全体がRAMに収まる方が高速に実行されます。
詳細
テキストインデックスについての詳細は、次を参照してください。
テキスト検索の例については、
$text reference pageを参照してください。集計パイプラインにおける
$text操作の例については、「自己管理型配置の集計パイプラインの $text 」を参照してください。