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