自己管理型配置でテキストインデックスのデフォルト言語を指定する
このチュートリアルでは、テキスト インデックスに関連付けられたデフォルト言語をが指定する方法と、異なる言語のドキュメントを含むコレクションのテキスト インデックスを作成する方法について説明します。
インデックスのデフォルト言語の指定text
インデックスされたデータに関連付けられたデフォルト言語によって、単語のルート( ステミング)、ストップワードを無視します。 インデックス付きデータのデフォルト言語はenglish
です。
別の言語を指定するには、 text
インデックスを作成するときにdefault_language
オプションを使用します。 default_language
で使用可能な言語については、「自己管理型配置のテキスト検索言語 」を参照してください。
次の例では、 quotes
コレクション向けにcontent
フィールドにtext
インデックスを作成し、 default_language
をspanish
に設定します。
db.quotes.createIndex( { content : "text" }, { default_language: "spanish" } )
text
複数言語のコレクションの インデックスの作成
ドキュメント内のインデックス言語の指定
コレクションに異なる言語のドキュメントまたは埋め込みドキュメントが含まれている場合は、ドキュメントまたは埋め込みドキュメントにlanguage
という名前のフィールドを含め、その値としてそのドキュメントまたは埋め込みドキュメントの言語を指定します。
MongoDB は、 text
インデックスを構築するときに、そのドキュメントまたは埋め込みドキュメントに対して指定された言語を使用します。
ドキュメントで指定された言語は、
text
インデックスのデフォルト言語を上書きします。埋め込みドキュメント内の指定された言語は、それを囲むドキュメントに指定された言語またはインデックスのデフォルト言語を上書きします。
サポートされている言語のリストについては、 「 自己管理型配置のテキスト検索言語」を参照してください。
たとえば、コレクションquotes
には、ドキュメント内のlanguage
フィールドや必要に応じて埋め込みドキュメントを含む複数言語ドキュメントが含まれています。
{ _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í." } }
デフォルト言語が英語で、 quote
フィールドにtext
インデックスを作成した場合
db.quotes.createIndex( { original: "text", "translation.quote": "text" } )
次に、 language
フィールドを含むドキュメントと埋め込みドキュメントの場合、 text
インデックスはその言語を使用して、単語の語幹やその他の言語特権を解析します。
language
フィールドを含まない埋め込みドキュメントの場合、
囲むドキュメントに
language
フィールドが含まれている場合、インデックスは埋め込みドキュメントにドキュメントの言語を使用します。それ以外の場合、インデックスは埋め込みドキュメントに対してデフォルト言語を使用します。
language
フィールドを含まないドキュメントの場合、インデックスはデフォルト言語(英語)を使用します。
任意のフィールドを使用してドキュメントの言語を指定
language
以外の名前のフィールドを使用するには、インデックスの作成時にlanguage_override
オプションを含めます。
たとえば、フィールド名としてlanguage
ではなくidioma
を使用するには、次のコマンドを入力します。
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
quotes
コレクションのドキュメントでは、 idioma
フィールドで言語を指定できます。
{ _id: 1, idioma: "portuguese", quote: "A sorte protege os audazes" } { _id: 2, idioma: "spanish", quote: "Nada hay más surrealista que la realidad." } { _id: 3, idioma: "english", quote: "is this a dagger which I see before me" }