Azure Cognitive Search インデックスの文字列フィールドにカスタム アナライザーを追加する
"カスタム アナライザー" は、トークナイザー、1 つ以上のトークン フィルター、および 1 つ以上の文字フィルターをユーザー定義で組み合わせたものです。 カスタム アナライザーは検索インデックス内で指定され、その後、カスタム分析を必要とするフィールド定義で参照されます。 カスタム アナライザーはフィールド単位で呼び出されます。 フィールドの属性によって、インデックス作成に使用されるか、クエリに使用されるか、それともその両方に使用されるかが決定されます。
カスタム アナライザーでは、トークナイザーによる処理の前に、文字フィルターによって入力テキストが準備されます (マークアップを削除するなど)。 その後、トークナイザーによってテキストがトークンに分割されます。 最後に、トークナイザーによって出力されたトークンがトークン フィルターによって変更されます。 概念と例については、「Azure Cognitive Search でのアナライザー」をご覧ください。
カスタム アナライザーを使用する理由
カスタム アナライザーを使用すると、呼び出す分析またはフィルター処理の種類と、実行順序を選択できるので、テキストをインデックス可能で検索可能なトークンに変換するプロセスを制御できます。
既定 (Standard Lucence)、組み込み、または言語アナライザーではニーズが満たされない場合は、カスタム アナライザーを作成して割り当てる必要があります。 組み込みのアナライザーとカスタム オプションを使用する場合も、カスタム アナライザーを作成する場合があります。 たとえば、Standard の maxTokenLength を変更する場合は、そのオプションを設定するために、ユーザー定義の名前を持つカスタム アナライザーを作成します。
カスタム アナライザーが役に立つシナリオを次に示します。
文字フィルターを使用して、テキスト入力がトークン化される前に HTML マークアップを削除したり、特定の文字や記号を置き換えたりする場合。
音声検索。 発音フィルターを追加することによって、単語の綴りではなく発音に基づく検索に対応します。
字句解析の無効化。 解析の対象外とする検索可能なフィールドをキーワード アナライザーで作成します。
高速なプレフィックス/サフィックス検索。 Edge N-gram トークン フィルターを追加し、単語のプレフィックスをインデックス化することによって、高速なプレフィックス マッチングに対応します。 リバース トークン フィルターを組み合わせることで、サフィックス マッチングを行うことができます。
カスタム トークン化。 たとえば空白文字を区切りとして文をトークンに分割するには、Whitespace トークナイザーを使用します
ASCII フォールディング。 検索語句に含まれる ö や ê などの付加記号を正規化するための標準 ASCII フォールディング フィルターを追加します。
注意
カスタム アナライザーは、Azure portal には表示されません。 カスタム アナライザーを追加する唯一の方法は、インデックスを定義するコードを使用することです。
カスタム アナライザーを作成する
カスタム アナライザーを作成するには、デザイン時にインデックスの "アナライザー" セクションでそれを指定してから、"analyzer" プロパティまたは "indexAnalyzer" と "searchAnalyzer" のペアのいずれかを使用して、検索可能な Edm.String フィールドでそれを参照します。
アナライザーの定義には、名前、種類、1 つ以上の文字フィルター、最大で 1 つのトークナイザー、トークン化後の処理のための 1 つ以上のトークン フィルターが含まれます。 文字フィルターは、トークン化の前に適用されます。 トークン フィルターと文字フィルターは、左から右に適用されます。
名前は、カスタム アナライザー内で一意である必要があり、組み込みのアナライザー、トークナイザー、トークン フィルター、または文字フィルターのいずれとも同じにすることはできません。 アルファベット、数字、空白、ダッシュ、アンダースコアのみを含める必要があります。また、最初と最後の文字は英数字にする必要があり、長さは 128 文字までに制限されています。
型は #Microsoft.Azure.Search.CustomAnalyzer にする必要があります。
"charFilters" は、指定された順序で、トークン化の前に処理される文字フィルターの 1 つまたは複数のフィルターにすることができます。 一部の文字フィルターにはオプションがあり、これは "charFilter" セクションで設定できます。 文字フィルターは省略可能です。
"トークナイザー" は 1 つのトークナイザーだけです。 値は必須です。 複数のトークナイザーが必要な場合は、複数のカスタム アナライザーを作成し、インデックス スキーマのフィールドごとに割り当てます。
"tokenFilters" は、指定された順序で、トークン化の後に処理されるトークン フィルターの 1 つまたは複数のフィルターにすることができます。 オプションがあるトークン フィルターについては、"tokenFilter" セクションを追加して構成を指定します。 トークン フィルターは省略可能です。
アナライザーで 300 文字を超えるトークンを生成しないでください。インデックス作成が失敗します。 長いトークンをトリミングするには、TruncateTokenFilter を、またはそれらを無視するには、LengthTokenFilter をそれぞれ使用します。 参考として、「トークン フィルター」を参照してください。
"analyzers":(optional)[
{
"name":"name of analyzer",
"@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
"charFilters":[
"char_filter_name_1",
"char_filter_name_2"
],
"tokenizer":"tokenizer_name",
"tokenFilters":[
"token_filter_name_1",
"token_filter_name_2"
]
},
{
"name":"name of analyzer",
"@odata.type":"#analyzer_type",
"option1":value1,
"option2":value2,
...
}
],
"charFilters":(optional)[
{
"name":"char_filter_name",
"@odata.type":"#char_filter_type",
"option1":value1,
"option2":value2,
...
}
],
"tokenizers":(optional)[
{
"name":"tokenizer_name",
"@odata.type":"#tokenizer_type",
"option1":value1,
"option2":value2,
...
}
],
"tokenFilters":(optional)[
{
"name":"token_filter_name",
"@odata.type":"#token_filter_type",
"option1":value1,
"option2":value2,
...
}
]
インデックス定義内で、インデックス作成要求本文内のどこにでも次のセクションを配置できますが、通常は末尾に置きます。
{
"name": "name_of_index",
"fields": [ ],
"suggesters": [ ],
"scoringProfiles": [ ],
"defaultScoringProfile": (optional) "...",
"corsOptions": (optional) { },
"analyzers":(optional)[ ],
"charFilters":(optional)[ ],
"tokenizers":(optional)[ ],
"tokenFilters":(optional)[ ]
}
アナライザーの定義は、より大きなインデックスの一部です。 文字フィルター、トークナイザー、トークン フィルターの定義は、カスタム オプションを設定する場合にのみ、インデックスに追加されます。 既存のフィルターまたはトークナイザーをそのまま使用するには、アナライザーの定義内で名前を使用して指定します。 詳細については、インデックスの作成 (REST) に関する記事をご覧ください。 その他の例については、Azure Cognitive Search でのアナライザーの例に関するセクションをご覧ください。
カスタム アナライザーのテスト
テスト アナライザー (REST) を使用して、指定したテキストがアナライザーによってどのようにトークンに分割されるかを確認できます。
Request
POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
{
"analyzer":"my_analyzer",
"text": "Vis-à-vis means Opposite"
}
Response
{
"tokens": [
{
"token": "vis_a_vis",
"startOffset": 0,
"endOffset": 9,
"position": 0
},
{
"token": "vis_à_vis",
"startOffset": 0,
"endOffset": 9,
"position": 0
},
{
"token": "means",
"startOffset": 10,
"endOffset": 15,
"position": 1
},
{
"token": "opposite",
"startOffset": 16,
"endOffset": 24,
"position": 2
}
]
}
カスタム アナライザーの更新
アナライザー、トークナイザー、トークン フィルター、文字フィルターは、いったん定義すると変更できません。 インデックスの更新要求で allowIndexDowntime
フラグが true に設定されている場合に限り、既存のインデックスに新しい定義を追加できます。
PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true
この操作を行うと、インデックスは少なくとも数秒間オフラインになるため、インデックス付けとクエリの要求は失敗します。 インデックスを更新した後の数分間、インデックスが非常に大きい場合はさらに長く、インデックスのパフォーマンスと書き込み可用性が損なわれる場合がありますが、これらの影響は一時的であり、しばらくすると自動的に解決します。
組み込みアナライザー
組み込みアナライザーをカスタム オプションと共に使用する場合、カスタム アナライザーの作成は、これらのオプションを指定するためのメカニズムです。 これに対して、組み込みのアナライザーをそのまま使用する場合は、フィールド定義でそれを名前で参照するだけで済みます。
analyzer_name | analyzer_type1 | 説明とオプション |
---|---|---|
keyword | (種類は、オプションが使用可能な場合にだけ適用されます) | フィールドの内容全体を 1 つのトークンとして扱います。 これは、郵便番号、ID、製品名などのデータで役立ちます。 |
pattern | PatternAnalyzer | 正規表現のパターンを使用してテキストを用語に柔軟に分割します。 オプションlowercase (型: bool) - 用語が小文字かどうかを決定します。 既定値は true です。 pattern (型:string) - トークンの区切り記号に一致する正規表現パターン。 既定値は \W+ で、単語以外の文字と一致します。 flags (型:string) - 正規表現フラグ。 既定値は空の文字列です。 使用可能な値: CANON_EQ、CASE_INSENSITIVE、コメント、DOTALL、リテラル、複数行、UNICODE_CASE、UNIX_LINES ストップワード (型: 文字列配列)-ストップワードの一覧。 既定値は空のリストです。 |
simple | (種類は、オプションが使用可能な場合にだけ適用されます) | 非文字でテキストが分割され、それらが小文字に変換されます。 |
標準(standard.lucene とも呼ばれます) | StandardAnalyzer | 標準トークナイザー、小文字フィルター、ストップ フィルターで構成される標準の Lucene アナライザー。 オプションmaxTokenLength (型:int) - 最大トークン長。 既定値は 255 です。 最大長より長いトークンは分割されます。 使用できる最大トークン長は、300 文字です。 stopwords (型:string 配列) - ストップワードのリスト。 既定値は空のリストです。 |
standardasciifolding.lucene | (種類は、オプションが使用可能な場合にだけ適用されます) | Ascii フォールディング フィルターの標準アナライザー。 |
stop | StopAnalyzer | 非文字でテキストが分割され、小文字とストップワードのトークン フィルターが適用されます。 オプションstopwords (型: string 配列) - ストップワードのリスト。 既定値は、英語の定義済みリストです。 |
whitespace | (種類は、オプションが使用可能な場合にだけ適用されます) | 空白文字トークナイザーを使用するアナライザー。 255 文字より長いトークンは分割されます。 |
1 コードでは、アナライザーの種類に常にプレフィックス "#Microsoft.Azure.Search" が付きます。たとえば、"PatternAnalyzer" は実際には "#Microsoft.Azure.Search.PatternAnalyzer" と指定します。 簡潔にするためプレフィックスを省略しましたが、コードではプレフィックスが必要です。
analyzer_type は、カスタマイズ可能なアナライザーに対してのみ提供されます。 keyword アナライザーのようにオプションがない場合は、関連付けられる #Microsoft.Azure.Search の種類はありません。
文字フィルター
文字列がトークナイザーに到達する前に、文字フィルターによる処理が追加されます。
Cognitive Search では、次の一覧の文字フィルターがサポートされます。 それぞれの詳細については、Lucene API リファレンスを参照してください。
char_filter_name | char_filter_type1 | 説明とオプション |
---|---|---|
html_strip | (種類は、オプションが使用可能な場合にだけ適用されます) | HTML の構造の除去を試みる文字フィルター。 |
mapping | MappingCharFilter | マッピング オプションで定義されたマッピングを適用する文字フィルター。 一致は最長一致です (特定ポイントでの最長パターン マッチングを優先)。 空の文字列での置換が許可されます。 オプション mappings (型: string 配列) - 次の形式のマッピングのリスト: "a=>b" (文字 "a" のすべての出現が文字 "b" で置換されます)。 必須。 |
pattern_replace | PatternReplaceCharFilter | 入力文字列内の文字を置換する文字フィルター。 正規表現を使用して維持する文字のシーケンスが識別され、置換パターンを使用して置換する文字が識別されます。 例:入力テキスト = = "aa bb aa bb"、 pattern="(aa)\\s+(bb)" replacement="$1#$2"、result = "aa#bb aa#bb".。 オプションpattern (型: string) - 必須。 replacement (型: string) - 必須。 |
1 コードでは、文字フィルターの種類に常にプレフィックス "#Microsoft.Azure.Search" が付きます。たとえば、"MappingCharFilter" は実際には "#Microsoft.Azure.Search.MappingCharFilter" と指定します。 テーブルの幅を小さくするためプレフィックスを削除しましたが、コードには忘れずに含めてください。 char_filter_type は、カスタマイズ可能なフィルターに対してのみ提供されることに注意してください。 html_strip のようにオプションがない場合は、関連付けられる #Microsoft.Azure.Search の種類はありません。
Tokenizer
トークナイザーでは、連続するテキストが一連のトークンに分割されます (文を単語に分割したり、単語を原型にしたりします)。
Cognitive Search では、次の一覧のトークナイザーがサポートされます。 それぞれの詳細については、Lucene API リファレンスを参照してください。
tokenizer_name | tokenizer_type1 | 説明とオプション |
---|---|---|
classic | ClassicTokenizer | ほとんどのヨーロッパ言語のドキュメントの処理に適した文法ベースのトークナイザー。 オプションmaxTokenLength (型:int) - 最大トークン長。 既定値は255、最大値は300。 最大長より長いトークンは分割されます。 |
edgeNGram | EdgeNGramTokenizer | エッジからの入力が指定サイズの n グラムにトークン化されます。 オプションmaxGram (型:int) - 既定値:2、最大値: 300。 maxGram (型: int) - 既定値:2、最大値: 300。 minGram より大きい値にする必要があります。 tokenChars (型: string 配列) - トークン内で維持する文字クラス。 使用できる値: "letter"、"digit"、"whitespace"、"punctuation"、"symbol"。 既定値は空の配列で、すべての文字が維持されます。 |
keyword_v2 | KeywordTokenizerV2 | 入力全体が 1 つのトークンとして生成されます。 オプションmaxTokenLength (型:int) - 最大トークン長。 既定値は256、最大値は300。 最大長より長いトークンは分割されます。 |
letter | (種類は、オプションが使用可能な場合にだけ適用されます) | 非文字でテキストを分割します。 255 文字より長いトークンは分割されます。 |
lowercase | (種類は、オプションが使用可能な場合にだけ適用されます) | 非文字でテキストが分割され、それらが小文字に変換されます。 255 文字より長いトークンは分割されます。 |
microsoft_language_tokenizer | MicrosoftLanguageTokenizer | 言語固有のルールを使用してテキストが分割されます。 オプションmaxTokenLength (型: int) - 最大トークン長、既定値: 255, 最大: 300。 最大長より長いトークンは分割されます。 300 文字より長いトークンは、最初に長さ 300 文字のトークンに分割された後、設定されている maxTokenLength に基づいて各トークンが分割されます。 isSearchTokenizer (型:bool) - 検索トークナイザーとして使用する場合は true に設定し、インデックス付けトークナイザーとして使用する場合は false に設定します。 language (型:string) - 使用する言語。既定値は "english" です。 許可される値:"bangla"、"bulgarian"、"catalan"、"chineseSimplified"、"chineseTraditional"、"croatian"、"czech"、"danish"、"dutch"、"english"、"french"、"german"、"greek"、"gujarati"、"hindi"、"icelandic"、"indonesian"、"italian"、"japanese"、"kannada"、"korean"、"malay"、"malayalam"、"marathi"、"norwegianBokmaal"、"polish"、"portuguese"、"portugueseBrazilian"、"punjabi"、"romanian"、"russian"、"serbianCyrillic"、"serbianLatin"、"slovenian"、"spanish"、"swedish"、"tamil"、"telugu"、"thai"、"ukrainian"、"urdu"、"vietnamese" |
microsoft_language_stemming_tokenizer | MicrosoftLanguageStemmingTokenizer | 言語固有のルールを使用してテキストが分割され、基本フォームに単語が減らされます。 このトークナイザーでは、レンマ化が実行されます。 オプションmaxTokenLength (型: int) - 最大トークン長、既定値: 255, 最大: 300。 最大長より長いトークンは分割されます。 300 文字より長いトークンは、最初に長さ 300 文字のトークンに分割された後、設定されている maxTokenLength に基づいて各トークンが分割されます。 isSearchTokenizer (型:bool) - 検索トークナイザーとして使用する場合は true に設定し、インデックス付けトークナイザーとして使用する場合は false に設定します。 language (型:string) - 使用する言語。既定値は "english" です。 許可される値:"arabic"、"bangla"、"bulgarian"、"catalan"、"croatian"、"czech"、"danish"、"dutch"、"english"、"estonian"、"finnish"、"french"、"german"、"greek"、"gujarati"、"hebrew"、"hindi"、"hungarian"、"icelandic"、"indonesian"、"italian"、"kannada"、"latvian"、"lithuanian"、"malay"、"malayalam"、"marathi"、"norwegianBokmaal"、"polish"、"portuguese"、"portugueseBrazilian"、"punjabi"、"romanian"、"russian"、"serbianCyrillic"、"serbianLatin"、"slovak"、"slovenian"、"spanish"、"swedish"、"tamil"、"telugu"、"turkish"、"ukrainian"、"urdu" |
nGram | NGramTokenizer | 入力が指定サイズの n グラムにトークン化されます。 オプションmaxGram (型:int) - 既定値:2、最大値: 300。 maxGram (型: int) - 既定値:2、最大値: 300。 minGram より大きい値にする必要があります。 tokenChars (型: string 配列) - トークン内で維持する文字クラス。 使用できる値: "letter"、"digit"、"whitespace"、"punctuation"、"symbol"。 既定値は空の配列で、すべての文字が維持されます。 |
path_hierarchy_v2 | PathHierarchyTokenizerV2 | パスのような階層のトークナイザー。 オプションdelimiter (型:string) - 既定値:'/. replacement (型:string) - 設定した場合、区切り記号文字が置き換えられます。 既定値は、delimiter の値と同じです。 maxTokenLength (型:int) - 最大トークン長。 既定値は300、最大値は300。 maxTokenLength より長いパスは無視されます。 reverse (型: bool) - true の場合、逆の順序でトークンが生成されます。 既定値は false です。 skip (型:bool) - スキップする最初のトークン。 既定値は 0 です。 |
pattern | PatternTokenizer | このトークナイザーでは、正規表現のパターン マッチングを使用して個別のトークンが作成されます。 オプションパターン (型: string) - トークンの区切り記号に一致する正規表現パターン。 既定値は \W+ で、単語以外の文字と一致します。 flags (型:string) - 正規表現フラグ。 既定値は空の文字列です。 使用できる値: CANON_EQ、CASE_INSENSITIVE、COMMENTS、DOTALL、LITERAL、MULTILINE、UNICODE_CASE、UNIX_LINES グループ (型:int) - トークンに抽出するグループ。 既定値は -1 (分割) です。 |
standard_v2 | StandardTokenizerV2 | Unicode テキスト セグメント化ルールに従ってテキストを分割します。 オプションmaxTokenLength (型:int) - 最大トークン長。 既定値は255、最大値は300。 最大長より長いトークンは分割されます。 |
uax_url_email | UaxUrlEmailTokenizer | URL と電子メールが 1 つのトークンとしてトークン化されます。 オプションmaxTokenLength (型:int) - 最大トークン長。 既定値は255、最大値は300。 最大長より長いトークンは分割されます。 |
whitespace | (種類は、オプションが使用可能な場合にだけ適用されます) | 空白文字によりテキストが分割されます。 255 文字より長いトークンは分割されます。 |
1 コードでは、トークナイザーの種類に常にプレフィックス "#Microsoft.Azure.Search" が付きます。たとえば、"ClassicTokenizer" は実際には "#Microsoft.Azure.Search.ClassicTokenizer" と指定します。 テーブルの幅を小さくするためプレフィックスを削除しましたが、コードには忘れずに含めてください。 tokenizer_type は、カスタマイズ可能なトークナイザーに対してのみ提供されることに注意してください。 letter トークナイザーのようにオプションがない場合は、関連付けられる #Microsoft.Azure.Search の種類はありません。
トークン フィルター
トークン フィルターは、トークナイザーによって生成されたトークンを除外したり加工したりする目的で使用されます。 たとえば、すべての文字を小文字に変換する lowercase フィルターを指定することができます。 トークン フィルターは、カスタム アナライザーの中で複数割り当てることができます。 トークン フィルターは、その指定順に実行されます。
次の表で、Apache Lucene を使用して実装されているトークン フィルターについては、Lucene の API ドキュメントへのリンクを示してあります。
token_filter_name | token_filter_type1 | 説明とオプション |
---|---|---|
arabic_normalization | (種類は、オプションが使用可能な場合にだけ適用されます) | アラビア語ノーマライザーを適用して正書法を正規化するトークン フィルター。 |
apostrophe | (種類は、オプションが使用可能な場合にだけ適用されます) | アポストロフィ以降 (アポストロフィ自体を含む) のすべての文字が除去されます。 |
asciifolding | AsciiFoldingTokenFilter | ASCII の最初の 127 文字 ("基本ラテン" Unicode ブロック) に含まれないアルファベット、数字、記号の Unicode 文字が、同等の ASCII に変換されます (ある場合)。 [オプション] preserveOriginal (型: bool) - true の場合、元のトークンが保持されます。 既定値は false です。 |
cjk_bigram | CjkBigramTokenFilter | StandardTokenizer から生成される CJK 用語のバイグラムが形成されます。 [オプション] ignoreScripts (型: string 配列) - 無視するスクリプト。 使用できる値: "han"、"hiragana"、"katakana"、"hangul"。 既定値は空のリストです。 outputUnigrams (型: bool) - 常にユニグラムとバイグラムの両方を出力する場合は、true に設定します。 既定値は false です。 |
cjk_width | (種類は、オプションが使用可能な場合にだけ適用されます) | CJK の幅の違いが正規化されます。 全角 ASCII 書体が同等の基本ラテンにフォールドされ、半角カタカナ書体が同等の仮名にフォールドされます。 |
classic | (種類は、オプションが使用可能な場合にだけ適用されます) | 英語の所有格を削除し、頭字語からドットを削除します。 |
common_grams | CommonGramTokenFilter | インデックス付けの間に、頻繁に発生する用語に対してバイグラムが作成されます。 1 つの用語も、バイグラムがオーバーレイされてインデックス付けされます。 [オプション] commonWords (型: string 配列) - 一般的な単語のセット。 既定値は空のリストです。 必須。 ignoreCase (型: bool) - true の場合、マッチングで大文字と小文字は区別されません。 既定値は false です。 queryMode (型: bool) - バイグラムが生成された後、一般的な単語と一般的な単語の前にある 1 つの用語が削除されます。 既定値は false です。 |
dictionary_decompounder | DictionaryDecompounderTokenFilter | 多くのゲルマン言語に出現する複合語を分解します。 [オプション] wordList (type: string 配列) - 照合対象の単語のリスト。 既定値は空のリストです。 必須。 minWordSize (型: int) - この値より長い単語のみが処理されます。 既定値は 5 です。 minSubwordSize (型: int) - この値より長いサブ単語のみが出力されます。 既定値は 2 です。 maxSubwordSize (型: int) - この値より短いサブ単語のみが出力されます。 既定値は 15 です。 onlyLongestMatch (型: bool) - 最長一致のサブ単語のみが出力に追加されます。 既定値は false です。 |
edgeNGram_v2 | EdgeNGramTokenFilterV2 | 入力トークンの先頭または末尾から指定されたサイズの n グラムが生成されます。 [オプション] minGram (型: int) - 既定値:1、最大値:300。 maxGram (型: int) - 既定値:2、最大値: 300。 minGram より大きい値にする必要があります。 side (型: string) - n グラムを生成する入力の側が指定されます。 使用できる値: "front"、"back" |
elision | ElisionTokenFilter | 省略記号が削除されます。 たとえば、"l'avion" (プレーン) は、"avion" (プレーン) に変換されます。 [オプション] articles (type: string 配列) - 削除する冠詞のセット。 既定値は空のリストです。 冠詞セットのリストがない場合は、既定でフランス語のすべての冠詞が削除されます。 |
german_normalization | (種類は、オプションが使用可能な場合にだけ適用されます) | German2 snowball アルゴリズムのヒューリスティックに従って、ドイツ語の文字が正規化されます。 |
hindi_normalization | (種類は、オプションが使用可能な場合にだけ適用されます) | ヒンディー語のテキストが正規化され、スペルのバリエーションの違いが削除されます。 |
indic_normalization | IndicNormalizationTokenFilter | インドの言語でのテキストの Unicode 表現が正規化されます。 |
keep | KeepTokenFilter | 指定した単語のリストに含まれるテキストを含むトークンのみを保持するトークン フィルター。 [オプション] keepWords (型: string 配列) - 保持する単語のリスト。 既定値は空のリストです。 必須。 keepWordsCase (型: bool) - true の場合、最初にすべての単語が小文字に変更されます。 既定値は false です。 |
keyword_marker | KeywordMarkerTokenFilter | 用語がキーワードとしてマークされます。 [オプション] keywords (型: string 配列) - キーワードとしてマークする単語のリスト。 既定値は空のリストです。 必須。 ignoreCase (型: bool) - true の場合、最初にすべての単語が小文字に変更されます。 既定値は false です。 |
keyword_repeat | (種類は、オプションが使用可能な場合にだけ適用されます) | 各入力トークンが 2 回出力されます (キーワードとして 1 回、非キーワードとして 1 回)。 |
kstem | (種類は、オプションが使用可能な場合にだけ適用されます) | 英語用の高パフォーマンスの kstem フィルター。 |
length | LengthTokenFilter | 長すぎる単語または短すぎる単語が削除されます。 [オプション] min (型: int) - 最小数。 既定値は0、最大値は300。 max (型: int) - 最大数。 既定値は300、最大値は300。 |
limit | Microsoft.Azure.Search.LimitTokenFilter | インデックス付けの間に、トークンの数が制限されます。 [オプション] maxTokenCount (型: int) - 生成するトークンの最大数。 既定値は 1 です。 consumeAllTokens (型: bool) - maxTokenCount に達した場合でも、入力のすべてのトークンを使用する必要があるかどうかが示されます。 既定値は false です。 |
lowercase | (種類は、オプションが使用可能な場合にだけ適用されます) | トークンのテキストが小文字に正規化されます。 |
nGram_v2 | NGramTokenFilterV2 | 指定サイズの n グラムが生成されます。 [オプション] minGram (型: int) - 既定値:1、最大値:300。 maxGram (型: int) - 既定値:2、最大値: 300。 minGram より大きい値にする必要があります。 |
pattern_capture | PatternCaptureTokenFilter | Java の正規表現を使用して複数のトークンが生成されます (1 つ以上のパターンのキャプチャ グループごとに 1 つ)。 [オプション] patterns (型: string 配列) - 各トークンと照合するパターンのリスト。 必須。 preserveOriginal (型: bool) - パターンのいずれかが一致した場合でも元のトークンを返す場合は、true に設定します。既定値: true |
pattern_replace | PatternReplaceTokenFilter | ストリームの各トークンにパターンを適用するトークン フィルター。指定した置換文字列に一致が置き換えられます。 [オプション] pattern (型: string) - 必須。 replacement (型: string) - 必須。 |
persian_normalization | (種類は、オプションが使用可能な場合にだけ適用されます) | ペルシャ語の正規化が適用されます。 |
phonetic | PhoneticTokenFilter | 音声一致用のトークンが作成されます。 [オプション] encoder (型: string) - 使用する音声エンコーダー。 使用できる値: "metaphone"、"doubleMetaphone"、"soundex"、"refinedSoundex"、"caverphone1"、"caverphone2"、"cologne"、"nysiis"、"koelnerPhonetik"、"haasePhonetik"、"beiderMorse"。 既定値: "metaphone"。 既定値は metaphone です。 詳しくは、encoder (エンコーダー) に関するページをご覧ください。 replace (型: bool) - エンコードされたトークンで元のトークンを置き換える必要がある場合は true、シノニムとして追加する場合は false。 既定値は true です。 |
porter_stem | (種類は、オプションが使用可能な場合にだけ適用されます) | Porter ステミング アルゴリズムに従ってトークン ストリームを変換します。 |
reverse | (種類は、オプションが使用可能な場合にだけ適用されます) | トークンの文字列が反転されます。 |
scandinavian_normalization | (種類は、オプションが使用可能な場合にだけ適用されます) | 交換可能なスカンジナビア語の文字の使用を正規化します。 |
scandinavian_folding | (種類は、オプションが使用可能な場合にだけ適用されます) | スカンジナビア語の文字が åÅäæÄÆ->a および öÖøØ->o にフォールドされます。 また、重母音 aa、ae、ao、oe、oo の使用を判別し、最初の 1 つだけが残されます。 |
shingle | ShingleTokenFilter | トークンの組み合わせが 1 つのトークンとして作成されます。 [オプション] maxShingleSize (型: int) - 既定値は 2 です。 minShingleSize (型: int) - 既定値は 2 です。 outputUnigrams (型: bool) - true の場合、出力ストリームには入力トークン (ユニグラム) と共にシングルが含まれます。 既定値は true です。 outputUnigramsIfNoShingles (型: bool) - true の場合、シングルが使用できない場合、outputUnigrams==false の動作がオーバーライドされます。 既定値は false です。 tokenSeparator (型: string) - 隣接するトークンを結合してシングルを形成するときに使用する文字列。 既定値は " " です。 filterToken (型: string) - 位置トークンがない各位置に挿入する文字列。 既定値は "_" です。 |
snowball | SnowballTokenFilter | Snowball トークン フィルター。 [オプション] language (型: string) - 使用できる値: "armenian"、"basque"、"catalan"、"danish"、"dutch"、"english"、"finnish"、"french"、"german"、"german2"、"hungarian"、"italian"、"kp"、"lovins"、"norwegian"、"porter"、"portuguese"、"romanian"、"russian"、"spanish"、"swedish"、"turkish" |
sorani_normalization | SoraniNormalizationTokenFilter | ソラニー語テキストの Unicode 表現が正規化されます。 [オプション] [なし] : |
stemmer | StemmerTokenFilter | 言語固有のステミング フィルター。 [オプション] language (型: string) - 使用できる値: - "arabic" - "armenian" - "basque" - "brazilian" -ブルガリア語 - "catalan" - "czech" - "danish" - "dutch" - "dutchKp" - "english" - "lightEnglish" - "minimalEnglish" - "possessiveEnglish" - "porter2" - "lovins" - "finnish" - "lightFinnish" - "french" - "lightFrench" - "minimalFrench" - "galician" - "minimalGalician" - "german" - "german2" - "lightGerman" - "minimalGerman" - "greek" - ヒンディー語 - "hungarian" - "lightHungarian" - "indonesian" - "irish" - "italian" - "lightItalian" - "sorani" - "latvian" - "norwegian" - "lightNorwegian" - "minimalNorwegian" - "lightNynorsk" - "minimalNynorsk" - "portuguese" - "lightPortuguese" - "minimalPortuguese" - "portugueseRslp" - "romanian" - "russian" - "lightRussian" - "spanish" - "lightSpanish" - "swedish" - "lightSwedish" - "turkish" |
stemmer_override | StemmerOverrideTokenFilter | 辞書でステミングされた用語はキーワードとしてマークされ、チェーンにステミングされるのを防ぎます。 すべてのステミング フィルターの前に配置する必要があります。 [オプション] rules (型: string 配列) - "word => stem" の形式のステミング ルール (例: "ran =>run")。 既定値は空のリストです。 必須。 |
stopwords | StopwordsTokenFilter | トークン ストリームからストップワードが削除されます。 既定では、フィルターに英語の定義済みストップワード リストが使用されます。 [オプション] stopwords (型: string 配列) - ストップワードのリスト。 stopwordsList が指定されている場合は指定できません。 stopwordsList (型: string) - ストップワードの定義済みのリスト。 "stopwords" が指定されている場合は指定できません。 使用できる値: "arabic"、"armenian"、"basque"、"brazilian"、"bulgarian"、"catalan"、"czech"、"danish"、"dutch"、"english"、"finnish"、"french"、"galician"、"german"、"greek"、"hindi"、"hungarian"、"indonesian"、"irish"、"italian"、"latvian"、"norwegian"、"persian"、"portuguese"、"romanian"、"russian"、"sorani"、"spanish"、"swedish"、"thai"、"turkish"。既定値: "english"。 "stopwords" が指定されている場合は指定できません。 ignoreCase (型: bool) - true の場合、最初にすべての単語を小文字に変更されます。 既定値は false です。 removeTrailing (型: bool) - true の場合、最後の検索語句がストップワードである場合は無視されます。 既定値は true です。 |
synonym | SynonymTokenFilter | トークン ストリーム内の 1 つまたは複数の単語のシノニムが照合されます。 [オプション] synonyms (型: string 配列) - 必須。 次の 2 つの形式のいずれかでのシノニムのリスト: - incredible, unbelievable, fabulous => amazing - => 記号の左側にあるすべての用語が、右側のすべての用語に置き換えられます。 \- incredible, unbelievable, fabulous, amazing - 同等の単語のコンマ区切りリスト。 このリストの解釈方法を変更するには、expand オプションを設定します。 ignoreCase (型: bool) - マッチングに対するケース フォールド入力。 既定値は false です。 expand (型: bool) - true の場合、シノニムのリスト内のすべての単語 (=> 表記が使用されていない場合) が相互にマップされます。 次のリスト: incredible, unbelievable, fabulous, amazing は、incredible, unbelievable, fabulous, amazing => incredible, unbelievable, fabulous, amazing と同等です - false の場合、次のリスト: incredible, unbelievable, fabulous, amazing は、incredible, unbelievable, fabulous, amazing => incredible と同等です。 |
trim | (種類は、オプションが使用可能な場合にだけ適用されます) | 先頭と末尾の空白文字がトークンからトリミングされます。 |
truncate | TruncateTokenFilter | 用語が特定の長さに切り詰められます。 [オプション] length (型: int) - 既定値は300、最大値は300。 必須。 |
unique | UniqueTokenFilter | 前のトークンと同じテキストのトークンが除外されます。 [オプション] onlyOnSamePosition (型: bool) - 設定した場合、同じ位置にある重複のみが削除されます。 既定値は true です。 |
uppercase | (種類は、オプションが使用可能な場合にだけ適用されます) | トークンのテキストが大文字に正規化されます。 |
word_delimiter | WordDelimiterTokenFilter | 単語がサブ単語に分割され、部分語のグループに対してオプションの変換が実行されます。 [オプション] generateWordParts (型: bool) - 単語が部分ごとに生成されます。たとえば、"AzureSearch" は "Azure" "Search" になります。 既定値は true です。 generateNumberParts (型: bool) - 数字のサブ単語が生成されます。 既定値は true です。 catenateWords (型: bool) - 単語部分の最大の連続が連結されます。たとえば、"Azure-Search" は "AzureSearch" になります。 既定値は false です。 catenateNumbers (型: bool) - 数字部分の最大の連続が連結されます。たとえば、"1-2" は "12" になります。 既定値は false です。 catenateAll (型: bool) - すべてのサブ単語部分が連結されます。たとえば、"Azure-Search-1" は "AzureSearch1" になります。 既定値は false です。 splitOnCaseChange (型: bool) - true の場合、大文字と小文字が変わったところで単語が分割されます。たとえば、"AzureSearch" は "Azure" "Search" になります。 既定値は true です。 preserveOriginal - 元の単語が維持され、サブ単語リストに追加されます。 既定値は false です。 splitOnNumerics (型: bool) - true の場合、数字で分割されます。たとえば、"Azure1Search" は "Azure" "1" "Search" になります。 既定値は true です。 stemEnglishPossessive (型: bool) - 各サブ単語で、末尾の "'s" が削除されます。 既定値は true です。 protectedWords (型: string 配列) - 区切られないように保護するトークン。 既定値は空のリストです。 |
1 コードでは、トークン フィルターの種類に常にプレフィックス "#Microsoft.Azure.Search" が付きます。たとえば、"ArabicNormalizationTokenFilter" は実際には "#Microsoft.Azure.Search.ArabicNormalizationTokenFilter" と指定します。 テーブルの幅を小さくするためプレフィックスを削除しましたが、コードには忘れずに含めてください。