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