アナライザを使用して、 MongoDB Search がstring
フィールドの内容を検索可能なタームに変換する方法を制御できます。アナライザは、テキストからトークンを抽出するトークナイザポリシー と、定義した フィルター を組み合わせたものです。MongoDB Search は フィルター をトークンに適用して、句読点、大文字、埋め込み単語などにおける差異を修正する索引可能なタームを作成します。
インデックスを構築するときやデータベースを検索するときにMongoDB Search が使用する アナライザ をインデックス定義で指定できます。個々のフィールドのインデックスを作成するときに使用する の代替(マルチ)アナライザを指定したり、独自のカスタムアナライザを定義したりすることもできます。
構文
次のタブは、インデックス定義で設定できるアナライザオプションの構文を示しています。
MongoDB Search のインデックス定義で analyzer
オプションを使用してインデックスを構築するときに、string フィールドに適用するMongoDB Search のインデックスアナライザを指定できます。
MongoDB Search は、フィールドの mappings.fields
定義内のフィールドに別のアナライザを指定しない限り、インデックス定義内のすべてのフィールドに最上位のアナライザを適用します。
analyzer
オプションを省略すると、 MongoDB Search はデフォルトで 標準アナライザを使用します。
1 { 2 "analyzer": "<analyzer-for-index>", 3 "mappings": { 4 "fields": { 5 "<string-field-name>": { 6 "type": "string", 7 "analyzer": "<analyzer-for-field>" 8 } 9 } 10 } 11 }
MongoDB Searchインデックス定義で searchAnalyzer
オプションを使用して、クエリ テキストに適用するMongoDB Search の検索アナライザを指定できます。
searchAnalyzer
オプションを省略すると、 MongoDB Search はデフォルトで、analyzer
オプションに指定したアナライザを使用します。両方のオプションを省略すると、 MongoDB Search はデフォルトで 標準 アナライザを使用します。
1 { 2 "searchAnalyzer": "<analyzer-for-query>", 3 "mappings": { 4 "dynamic": <boolean>, 5 "fields": { <field-definition> } 6 } 7 }
MongoDB Search のインデックス定義で multi
オプションを使用してインデックスを構築するときに、 MongoDB Search が string フィールドに適用する代替アナライザを指定できます。
MongoDB Search クエリで代替アナライザを使用するには、クエリ演算子のクエリパスの multi
フィールドに代替アナライザの名前を指定する必要があります。
詳しくは、「 マルチアナライザ 」を参照してください。
1 { 2 "mappings": { 3 "fields": { 4 "<string-field-name>": { 5 "type": "string", 6 "analyzer": "<default-analyzer-for-field>", 7 "multi": { 8 "<alternate-analyzer-name>": { 9 "type": "string", 10 "analyzer": "<alternate-analyzer-for-field>" 11 } 12 } 13 } 14 } 15 } 16 }
MongoDB Searchインデックスの analyzers
オプションを使用して、文字シーケンスを変換、フィルタリング、グループ化するための 1 つ以上のカスタムアナライザを定義できます。
定義したカスタムアナライザを使用するには、インデックス定義の analyzer
、searchAnalyzer
、または multi.analyzer
オプションにそのname
値を指定します。
詳細については、カスタムアナライザを参照してください。
1 { 2 "mappings": { 3 "dynamic": <boolean>, 4 "fields": { <field-definition> } 5 }, 6 "analyzers": [ 7 { 8 "name": "<custom-analyzer-name>", 9 "tokenizer": { 10 "type": "<tokenizer-type>" 11 } 12 } 13 ] 14 }
Tip
ビデオで学ぶ
このビデオでは、 MongoDB Search が アナライザ を使用してドキュメントを検索可能なユニットに分割し、 逆インデックスを構築する方法を確認します。
所要時間: 8分
アナライザ
MongoDB Search は、次の組み込みアナライザを提供します。
analyzer | 説明 |
---|---|
すべてのMongoDB Search インデックスとクエリにデフォルトのアナライザを使用します。 | |
文字以外の文字が見つかった場合、テキストを検索可能なタームに分割します。 | |
空白文字が見つかった場合は、テキストを検索可能なタームに分割します。 | |
テキスト フィールドを単一の用語としてインデックスします。 | |
言語固有のテキスト アナライザ のセットを提供します。 |
インデックス定義でアナライザを指定しない場合、MongoDBはデフォルトの標準アナライザを使用します。
正規化
正規表現は、分析の最後に 1 つのトークンのみを生成します。正規表現は、 MongoDB Search トークン タイプのフィールド定義でのみ構成できます。MongoDB Search は次の正規表現を提供します。
正規表現 | 説明 |
---|---|
| string フィールド内のテキストを小文字に変換し、string 全体に対して単一のトークンを作成します。 |
| 変換は実行されませんが、単一のトークンが作成されます。 |
詳細
アナライザの詳細については、MongoDB Developer Center でアナライザを分析してアプリに適切な検索インデックスを構築するを参照してください。