カスタムアナライザのトークナイザは、 MongoDB Search がインデックスを作成するためにテキストを個別のチャンクに分割する方法を決定します。トークナイザにはタイプフィールドが必要で、一部のトークナイザは追加のオプションも受け取ります。
"tokenizer": { "type": "<tokenizer-type>", "<additional-option>": "<value>" }
このページのサンプルインデックス定義とクエリでは、minutes という名前の サンプルコレクション を使用します。これらの例を試すには、クラスターに minutes コレクションを読み込み、「MongoDB Search インデックスの作成」チュートリアルの手順に従って Atlas UI の Create a Search Index ページに移動します。次に、minutes コレクションをデータソースとして選択し、例の手順に従って Atlas UI から、または mongosh を使用してインデックスを作成します。
edgeGram
edgeGramトークナイザは、テキスト入力の左側、つまり「エッジ」からの入力を指定されたサイズの n グラムにトークン化します。 シノニムanalyzer または オートコンプリート フィールド マッピング定義 の フィールドでは、 edgeGram トークナイザ とカスタムアナライザを使用することはできません。
属性
edgeGram トークナイザには次の属性があります。
注意
edgeGramトークナイザは、1 単語ごとおよび入力テキスト内の単語全体に複数の出力トークンを生成し、トークン グラフを生成します。
オートコンプリート フィールド型マッピング定義と シノニム マッピングを持つアナライザは、グラフを生成しないトークナイザで使用された場合にのみ機能するため、analyzer オートコンプリート フィールド型マッピング定義または シノニム を持つアナライザには、 フィールドで EdgeGram トークナイザ を含むカスタムアナライザを使用することはできませんマッピング。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| integer | はい | 作成された最短のトークンに含める文字数。 |
| integer | はい | 作成された最長トークンに含める文字数。 |
例
次のインデックス定義は、 edgegramExampleという名前のカスタムアナライザを使用して、 minutesコレクションのmessageフィールドをインデックス化します。 edgeGramトークナイザを使用して、2 7フィールドの単語の左側の最初の文字から始まる 文字と 文字の長さのトークン(検索可能なターム)を作成します。message
次のクエリは、 minutesコレクションのmessageフィールドでtrで始まるテキストを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの edgeGramトークナイザを使用して、値 tr のトークンを作成したため、結果に _id: 1 と _id: 3 を含むドキュメントを返します。standardトークナイザを使用して messageフィールドをインデックスと、 MongoDB Search は検索タームtr の結果を返しません。
次の表は、 edgeGramトークナイザと比較してstandardトークナイザが結果内のドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
keyword
keywordトークナイザは入力全体を単一のトークンとしてトークン化します。MongoDB Search は、keywordトークナイザを使用して、32766 文字を超える string フィールドのインデックスしません。
属性
keyword トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
例
次のインデックス定義は、 keywordExampleという名前のカスタムアナライザを使用して、 minutesコレクションのmessageフィールドをインデックス化します。 keywordトークナイザを使用して、フィールド全体にトークン(検索可能なターム)を 1 つのタームとして作成します。
次のクエリは、 minutesコレクションのmessageフィールドでフレーズtry to sign-inを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの keywordトークナイザを使用して、値 try to sign-in のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して messageフィールドをインデックスと、 MongoDB Search は検索タームtry to sign-in に対して _id: 1、_id: 2、_id: 3 を含むドキュメントを返します。これは、各ドキュメントにいくつかのトークンが含まれているためです。standardトークナイザはを作成します。
次の表は、 keywordトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
nGram
nGramトークナイザは、指定されたサイズのテキストチャンク、つまり「n グラム」にトークン化します。 シノニム (同意語) または オートコンプリート フィールドのマッピング定義 では、 フィールドで nGram トークナイザ とカスタムアナライザを使用することはできません。analyzer
属性
nGram トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| integer | はい | 作成された最短のトークンに含める文字数。 |
| integer | はい | 作成された最長トークンに含める文字数。 |
例
次のインデックス定義は、 ngramExampleという名前のカスタムアナライザを使用して、 minutesコレクションのtitleフィールドをインデックス化します。 nGramトークナイザを使用して、 titleフィールドに4から6文字の長さのトークン(検索可能なターム)を作成します。
次のクエリは、 minutesコレクションのtitleフィールドでweekというタームを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの nGramトークナイザを使用して、値 week のトークンを作成したため、結果に _id: 1 を含むドキュメントを返します。standardまたは edgeGramトークナイザを使用して titleフィールドをインデックスと、 MongoDB Search は検索タームweek の結果を返しません。
次の表は、 nGramトークナイザと比較して、 standardとedgeGramトークナイザが_id: 1を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
|
|
regexCaptureGroup
regexCaptureGroup トークナイザは、Java の正規表現パターンを使用してトークンを抽出します。
Tip
Java 正規表現構文の詳細については、Java ドキュメントの「Pattern(パターン)」クラスを参照してください。
属性
regexCaptureGroup トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| string | はい | 照合する正規表現。 |
| integer | はい | トークンに抽出する一致する式内の文字グループのインデックス。 すべての文字グループを抽出するには、 |
例
次のインデックス定義は、 phoneNumberExtractorという名前のカスタムアナライザを使用して、 minutesコレクションのpage_updated_by.phoneフィールドをインデックス化します。 このクエリでは、次の を使用します。
mappings文字フィルター : 最初の 3 桁の括弧を除き、すべてのスペースとピリオドをダッシュに置き換えます。regexCaptureGroupテキスト入力に存在する最初の米国形式の電話番号から単一のトークンを作成するためのトークナイザ
次のクエリは、 minutesコレクションのpage_updated_by.phoneフィールドで電話番号123-456-9870を検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの regexCaptureGroupトークナイザを使用して、値 123-456-7890 のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して page_updated_by.phoneフィールドをインデックスと、 MongoDB Search は検索ターム123-456-7890 のすべてのドキュメントを返します。
次の表は、 regexCaptureGroupトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
regexSplit
regexSplit トークナイザは、Java の正規表現に基づく区切り文字を使用してトークンを分割します。
Tip
Java 正規表現構文の詳細については、Java ドキュメントの「Pattern(パターン)」クラスを参照してください。
属性
regexSplit トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| string | はい | 照合する正規表現。 |
例
次のインデックス定義は、 dashDotSpaceSplitterという名前のカスタムアナライザを使用して、 minutesコレクションのpage_updated_by.phoneフィールドをインデックス化します。 regexSplitトークナイザを使用して、 page_updated_by.phoneフィールドの 1 つ以上のハイフン、ピリオド、スペースからトークン(検索可能なターム)を作成します。
次のクエリは、 minutesコレクションのpage_updated_by.phoneフィールドで数字9870を検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの regexSplitトークナイザを使用して、値 9870 のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して page_updated_by.phoneフィールドをインデックスと、 MongoDB Search は検索ターム9870 の結果を返しません。
次の表は、 regexCaptureGroupトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
標準
standardトークナイザは、Unicode テキスト分割アルゴリズムの 単語の分割ルール に基づいてトークン化します。
属性
standard トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| integer | no | 単一トークンの最大長。 この長さを超えるトークンは、 デフォルト: |
例
次のインデックス定義は、 standardExampleという名前のカスタムアナライザを使用して、 minutesコレクションのmessageフィールドをインデックス化します。 standardトークナイザとストップワード トークン フィルター を使用します。
次のクエリは、 minutesコレクションのmessageフィールドでsignatureというタームを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの standardトークナイザを使用して、値 signature のトークンを作成したため、_id: 4 を含むドキュメントを返します。keywordトークナイザを使用して messageフィールドをインデックスと、 MongoDB Search は検索タームsignature の結果を返しません。
次の表は、 standardトークナイザと比較してkeywordアナライザが_id: 4を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
uaxUrlEmail
uaxUrlEmail トークナイザは URL とメールアドレスをトークン化します。uaxUrlEmail トークナイザは Unicode テキスト セグメンテーション アルゴリズムの単語区切りルールに基づいてトークン化しますが、インデックスフィールド値に URL やメールアドレスが含まれている場合にのみ uaxUrlEmail トークナイザを使用することをお勧めします。URL やメールアドレスを含まないフィールドの場合は、standard トークナイザを使用して単語区切りルールに基づいてトークンを作成します。
属性
uaxUrlEmail トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| 整数 | no | 1 つのトークン内の最大文字数。 デフォルト: |
例
次のインデックス定義は、 basicEmailAddressAnalyzerという名前のカスタムアナライザを使用して、 minutesコレクションのpage_updated_by.emailフィールドをインデックス化します。 uaxUrlEmailトークナイザを使用して、 page_updated_by.emailフィールドのURLとメールアドレスからトークン(検索可能なターム)を作成します。
次のクエリは、 minutesコレクションのpage_updated_by.emailフィールドでメールlewinsky@example.comを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの uaxUrlEmailトークナイザを使用して、値 lewinsky@example.com のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して page_updated_by.emailフィールドをインデックスと、 MongoDB Search は検索タームlewinsky@example.com のすべてのドキュメントを返します。
次の表は、 uaxUrlEmailトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|
次のインデックス定義は、 emailAddressAnalyzerという名前のカスタムアナライザを使用して、 minutesコレクションのpage_updated_by.emailフィールドをインデックス化します。 このクエリでは、次の を使用します。
トークン化戦略 を持つ オートコンプリート タイプ
edgeGramURLとメールアドレスからトークン(検索可能なターム)を作成する
uaxUrlEmailトークナイザ
次のクエリは、 minutesコレクションのpage_updated_by.emailフィールドでexamというタームを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの uaxUrlEmailトークナイザを使用して、値 lewinsky@example.com のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して page_updated_by.emailフィールドをインデックスと、 MongoDB Search は検索タームlewinsky@example.com のすべてのドキュメントを返します。
次の表は、 uaxUrlEmailトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | MongoDB Search フィールド タイプ | Token Outputs |
|---|---|---|
|
|
|
|
|
|
whitespace
whitespaceトークナイザは、単語間の空白の発生に基づいてトークン化します。
属性
whitespace トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| integer | no | 単一トークンの最大長。 この長さを超えるトークンは、 デフォルト: |
例
次のインデックス定義は、 whitespaceExampleという名前のカスタムアナライザを使用して、 minutesコレクションのmessageフィールドをインデックス化します。 whitespaceトークナイザを使用して、 messageフィールド内の任意の空白からトークン(検索可能なターム)を作成します。
次のクエリは、 minutesコレクションのmessageフィールドでSIGN-INというタームを検索します。
MongoDB Search は、検索タームに一致MongoDBドキュメントの whitespaceトークナイザを使用して、値 sign-in のトークンを作成したため、結果に _id: 3 を含むドキュメントを返します。standardトークナイザを使用して messageフィールドをインデックスと、 MongoDB Search は検索タームsign-in に対して _id: 1、_id: 2、_id: 3 を含むドキュメントを返します。
次の表は、 whitespaceトークナイザと比較してstandardトークナイザが_id: 3を含むドキュメントに対して作成するトークンを示しています。
トークナイザ | Token Outputs |
|---|---|
|
|
|
|