Text Indexes
Overview
テキスト インデックスは、string コンテンツに対するテキスト検索クエリをサポートします。 これらのインデックスには、値が string または複数の string 配列である任意のフィールドを含めることができます。 MongoDB はさまざまな言語のテキスト検索をサポートしています。 インデックスの作成時に、オプションとしてデフォルト言語を指定できます。
Tip
MongoDBは、改良された全文検索ソリューションである Atlas Search を提供します。Atlas Search インデックスとその使用方法の詳細については、 Atlas Search とベクトル検索インデックスのガイドを参照してください。
サンプル データ
このガイドの例では、 Atlas サンプル データセットの sample_mflix.movies
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 PyMongo を使い始める を参照してください。
単一フィールドのテキストインデックス
次の例では、 plot
フィールドに テキスト インデックスを作成しています。
movies.create_index( [( "plot", "text" )] )
以下は、前のコード例で作成されたインデックスを使用するクエリの例です。
query = { "$text": { "$search": "a time-traveling DeLorean" } } cursor = movies.find(query)
複数のフィールドのテキストインデックス
コレクションには 1 つのテキスト インデックスのみを含めることができます。 複数のテキストフィールドのテキストインデックスを作成する場合は、複合インデックスを作成します。 複合インデックス内のすべてのテキスト フィールドに対してテキスト検索が実行されます。
次の例では、 フィールドと フィールドの複合テキストtitle
genre
インデックスを作成します。
result = myColl.create_index( [("title", "text"), ("genre", "text")], default_language="english", weights={ "title": 10, "genre": 3 } )
詳細については、 マニュアルの「 複合テキストインデックスの制限 」と「 テキストインデックスMongoDB Server 」を参照してください。