テキストインデックスを作成すると、複数言語のテキストを含むドキュメントまたは埋め込みドキュメントを含むコレクションに対して実行されるテキスト検索クエリのパフォーマンスが向上します。
コレクションに複数の異なる言語のドキュメントまたは埋め込みドキュメントが含まれている場合は、 languageという名前のフィールドを含め、それらのドキュメントの言語をフィールド値として指定します。 テキスト インデックス作成に使用できる言語を確認するには、「自己管理型配置でのテキスト検索言語 」を参照してください。
複数言語のテキスト インデックス作成をサポートするには、挿入操作は次の例のようになります。
db.<collection>.insertOne( { <field>: <value>, language: <language> } )
始める前に
次のように、 languageフィールドを含む複数言語ドキュメントを含むquotesコレクションを作成します。
db.quotes.insertMany( [ { _id: 1, language: "portuguese", original: "A sorte protege os audazes.", translation: [ { language: "english", quote: "Fortune favors the bold." }, { language: "spanish", quote: "La suerte protege a los audaces." } ] }, { _id: 2, language: "spanish", original: "Nada hay más surrealista que la realidad.", translation: [ { language: "english", quote: "There is nothing more surreal than reality." }, { language: "french", quote: "Il n'y a rien de plus surréaliste que la réalité." } ] }, { _id: 3, original: "Is this a dagger which I see before me?", translation: { language: "spanish", quote: "Es este un puñal que veo delante de mí." } } ] )
手順
次の操作では、 フィールドと フィールドにテキストoriginal translation.quoteインデックスが作成されます。
db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })
注意
インデックスのデフォルト言語は英語です。default_言語を指定しない場合は、クエリが$言語パラメータを使用して言語を指定する必要があります。詳細については、自己管理型MongoDBのテキストインデックスの言語の指定を参照してください。
結果
結果のインデックスは、original フィールドとtranslation.quote フィールドを含むドキュメントと埋め込みドキュメントのテキスト検索クエリをサポートします。テキスト インデックスは、 languageフィールドの値に基づいて、各言語に固有のストップワードを無視します。
たとえば、次のクエリは、 frenchという単語réalitéを検索します。
db.quotes.find( { $text: { $search: "réalité" } } )
出力:
[ { _id: 2, language: 'spanish', original: 'Nada hay más surrealista que la realidad.', translation: [ { language: 'english', quote: 'There is nothing more surreal than reality.' }, { language: 'french', quote: "Il n'y a rien de plus surréaliste que la réalité." } ] } ]
languageフィールドを含まない埋め込みドキュメントの場合、
を囲むドキュメントに
languageフィールドが含まれている場合、インデックスは埋め込みドキュメントにドキュメントの言語を使用します。それ以外の場合、インデックスは埋め込みドキュメントに対してデフォルト言語を使用します。
languageフィールドを含まないドキュメントの場合、インデックスはデフォルト言語(英語)を使用します。
詳細
language以外のフィールドにテキストインデックス言語を指定するには、自己管理型配置でテキスト インデックス言語を指定する を参照してください。テキストインデックスのデフォルト言語を指定する方法については、自己管理型MongoDBのテキストインデックスの言語の指定を参照してください。
その他のテキスト インデックス プロパティについては、「自己管理型配置のテキスト インデックス プロパティ 」を参照してください。