カスタムアナライザのトークナイザは、 MongoDB Search がインデックスを作成するためにテキストを個別のチャンクに分割する方法を決定します。トークナイザにはタイプフィールドが必要で、一部のトークナイザは追加のオプションも受け取ります。
"tokenizer": { "type": "<tokenizer-type>", "<additional-option>": "<value>" }
The sample index definitions and queries on this page use the sample collection named minutes. To try these examples, load the minutes collection on your cluster and navigate to the Create a Search Index page in the Atlas UI following the steps in the Create a MongoDB Search Index tutorial. Then, select the minutes collection as your data source, and follow the example procedure to create an index from the Atlas UI or using mongosh.
edgeGram
The edgeGram tokenizer tokenizes input from the left side, or "edge", of a text input into n-grams of given sizes. You can't use a custom analyzer with edgeGram tokenizer in the analyzer field for synonym or autocomplete field mapping definitions.
属性
edgeGram トークナイザには次の属性があります。
注意
edgeGramトークナイザは、1 単語ごとおよび入力テキスト内の単語全体に複数の出力トークンを生成し、トークン グラフを生成します。
Because autocomplete field type mapping definitions and analyzers with synonym mappings only work when used with non-graph-producing tokenizers, you can't use a custom analyzer with edgeGram tokenizer in the analyzer field for autocomplete field type mapping definitions or analyzers with synonym mappings.
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| 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
The nGram tokenizer tokenizes into text chunks, or "n-grams", of given sizes. You can't use a custom analyzer with nGram tokenizer in the analyzer field for synonym or autocomplete field mapping definitions.
属性
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
To learn more about Java regular expression syntax, see the Pattern class in the Java documentation.
属性
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
To learn more about Java regular expression syntax, see the Pattern class in the Java documentation.
属性
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
The uaxUrlEmail tokenizer tokenizes URLs and email addresses. Although uaxUrlEmail tokenizer tokenizes based on word break rules from the Unicode Text Segmentation algorithm, we recommend using uaxUrlEmail tokenizer only when the indexed field value includes URLs and email addresses. For fields that don't include URLs or email addresses, use the standard tokenizer to create tokens based on word break rules.
属性
uaxUrlEmail トークナイザには次の属性があります。
名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| string | はい | このトークナイザのタイプを識別する、人間が判読できるラベル。 値は |
| 整数 | no | 1 つのトークン内の最大文字数。 デフォルト: |
例
The following index definition indexes the page_updated_by.email field in the minutes collection using a custom analyzer named basicEmailAddressAnalyzer. It uses the uaxUrlEmail tokenizer to create tokens (searchable terms) from URLs and email addresses in the page_updated_by.email field.
次のクエリは、 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 |
|---|---|
|
|
|
|