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

自己管理型配置のテキストインデックス

項目一覧

  • $text サポート
  • ユースケース
  • はじめる
  • 詳細
  • 複合テキストインデックス
  • sparse プロパティ
  • ストレージ要件とパフォーマンスのコスト
  • 詳細

注意

このページでは、自己管理型型(Atlas以外)デプロイメントのテキスト クエリ機能について説明します。 MongoDB Atlasでホストされているデータに対して、 MongoDBは改良された全文クエリ ソリューションである Atlas Search とベクトル検索ソリューションである Atlas ベクトル検索を提供します。

テキスト インデックスは、文字列コンテンツを含むフィールドに対するテキスト検索クエリをサポートしています。テキストインデックスを使用すると、文字列コンテンツ内の特定の単語または語句を検索するときのパフォーマンスが向上します。

コレクションに含められるテキスト インデックスは 1 つだけですが、そのインデックスには複数のフィールドを含めることができます。

テキストインデックスを作成するには、次のプロトタイプを使用します。

db.<collection>.createIndex(
{
<field1>: "text",
<field2>: "text",
...
}
)

テキスト インデックスは、オンプレミス配置での $text クエリ操作をサポートしています。$text を使用するには、テキスト インデックスを作成する必要があります。

オンラインショップの clothing コレクション内のドキュメントには、各商品を説明する文字列を含む description フィールドが含まれています。silk で作られた服を検索するには、description フィールドにテキスト インデックスを作成し、silk というキーワードを含むドキュメントに対して $text クエリを実行します。検索では、description フィールドに silk が含まれるすべてのドキュメントが返されます。

テキストインデックスの作成方法と特定のユースケースでのテキストインデックスの使用方法については、以下を参照してください。

このセクションでは、テキストインデックスの詳細について説明します。

テキストインデックスのキーと他の型のキーを含む複合インデックスの場合、インデックスがドキュメントを参照するかどうかは、テキストインデックスのフィールドのみで決定されます。その他のキーは、インデックスがドキュメントを参照するかどうかを決定しません。

テキストインデックスは常にスパースです。テキストインデックスを作成すると、MongoDB は sparse オプションを無視します。

既存または新しく挿入されたドキュメントにテキストインデックスのフィールドがない場合(またはフィールドが NULL または空の配列)、MongoDB はドキュメントにテキストインデックスエントリを追加しません。

テキストインデックスには、次のストレージ要件とパフォーマンスのコストがあります。

  • テキストインデックスは大量の RAM を要する可能性があります。挿入された各ドキュメントの各インデックス付きフィールドには、それぞれユニークなステミング処理された単語ごとに 1 つのインデックスエントリが含まれます。

  • テキストインデックスの作成は、大規模なマルチキーインデックスの作成と似ていますが、同じデータに対して単純な順序付き(スカラー)インデックスを作成するよりも時間がかかります。

  • 大量の RAM を消費するテキストインデックスを作成する場合は、オープンできるファイル記述子に十分な上限を設けるように確認します。推奨設定を参照してください。

  • テキストインデックスは書き込みパフォーマンスに影響します。これは、MongoDB が新しいソースドキュメントの各インデックス付きフィールドに、ユニークなステミング処理されたインデックスエントリを追加する必要があるためです。

  • テキストインデックスは、テキスト文字列の個々の単語をストアします。ドキュメント内のフレーズや単語の近接性に関する情報はストアしません。その結果、複数の単語を指定するクエリは、コレクション全体が RAM に収まる方が高速に実行されます。

戻る

言語