AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

カスタム検索アナライザのトークナイザ

カスタムアナライザのトークナイザは、 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.

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.

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はedgeGramである必要があります。

minGram

integer

はい

作成された最短のトークンに含める文字数。

maxGram

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

standard

try, to, sign, in

edgeGram

tr, try, try{SPACE}, try t, try to, try to{SPACE}

keywordトークナイザは入力全体を単一のトークンとしてトークン化します。MongoDB Search は、keywordトークナイザを使用して、32766 文字を超える string フィールドのインデックスしません。

keyword トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はkeywordである必要があります。

次のインデックス定義は、 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

standard

try, to, sign, in

keyword

try to sign-in

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 トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はnGramである必要があります。

minGram

integer

はい

作成された最短のトークンに含める文字数。

maxGram

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トークナイザと比較して、 standardedgeGramトークナイザが_id: 1を含むドキュメントに対して作成するトークンを示しています。

トークナイザ
Token Outputs

standard

The, team's, weekly, meeting

edgeGram

The{SPACE}, The t, The te

nGram

The{SPACE}, The t, The te, he t, ... , week, weekl, weekly, eekl, ..., eetin, eeting, etin, eting, ting

regexCaptureGroup トークナイザは、Java の正規表現パターンを使用してトークンを抽出します。

Tip

To learn more about Java regular expression syntax, see the Pattern class in the Java documentation.

regexCaptureGroup トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はregexCaptureGroupである必要があります。

pattern

string

はい

照合する正規表現。

group

integer

はい

トークンに抽出する一致する式内の文字グループのインデックス。 すべての文字グループを抽出するには、 0を使用します。

次のインデックス定義は、 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

standard

123, 456.9870

regexCaptureGroup

123-456-9870

regexSplit トークナイザは、Java の正規表現に基づく区切り文字を使用してトークンを分割します。

Tip

To learn more about Java regular expression syntax, see the Pattern class in the Java documentation.

regexSplit トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はregexSplitである必要があります。

pattern

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

123, 456.9870

regexSplit

(123), 456, 9870

トークナイザは、standard Unicode テキスト分割アルゴリズムの単語の分割ルールに基づいてトークン化します。

standard トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はstandardである必要があります。

maxTokenLength

integer

no

単一トークンの最大長。 この長さを超えるトークンは、 maxTokenLengthで複数のトークンに分割されます。

デフォルト: 255

次のインデックス定義は、 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

standard

write, down, your, signature, or, phone

keyword

write down your signature or phone №

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 トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はuaxUrlEmailである必要があります。

maxTokenLength

整数

no

1 つのトークン内の最大文字数。

デフォルト: 255

uexUrlEmailトークナイザを使用して単純なインデックスを作成します。

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

standard

lewinsky, example.com

uaxUrlEmail

lewinsky@example.com

オートコンプリート トークン化戦略を持つ uexUrlEmailトークナイザを使用してインデックスを作成します。

次のインデックス定義は、 emailAddressAnalyzerという名前のカスタムアナライザを使用して、 minutesコレクションのpage_updated_by.emailフィールドをインデックス化します。 このクエリでは、次の を使用します。

  • トークン化戦略 を持つ オートコンプリート タイプedgeGram

  • URLとメールアドレスからトークン(検索可能なターム)を作成する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

standard

autocomplete edgeGram

le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky, ex, exa, exam, examp, exampl, example, example., example.c, example.co, example.com

uaxUrlEmail

autocomplete edgeGram

le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky@e, lewinsky@ex, lewinsky@exa, lewinsky@exam, lewinsky@examp, lewinsky@exampl

whitespaceトークナイザは、単語間の空白の発生に基づいてトークン化します。

whitespace トークナイザには次の属性があります。

名前
タイプ
必須
説明

type

string

はい

このトークナイザのタイプを識別する、人間が判読できるラベル。 値はwhitespaceである必要があります。

maxTokenLength

integer

no

単一トークンの最大長。 この長さを超えるトークンは、 maxTokenLengthで複数のトークンに分割されます。

デフォルト: 255

次のインデックス定義は、 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

standard

try, to, sign, in

whitespace

try, to, sign-in