1

Azure Search のカスタム アナライザーを定義する場合、このリストからトークン フィルターを定義するオプションがあります。プレフィックスとインフィックスの両方の検索をサポートしようとしています。例: フィールドに 123 456 という名前が含まれている場合、検索可能な用語に次のものが含まれるようにします。

1
12
123
23
3
4
45
456
56
6

トリックを行うと思われる EdgeNGramTokenFilterV2 を使用する場合、「サイド」プロパティを定義するオプションがありますが、「フロント」と「バック」のみがサポートされ、両方はサポートされません。"front" (デフォルト) 値により、次のリストが生成されます。

1
12
123
4
45
456

そして戻って生成します:

123
23
3
456
56
6

2 つのトークン 2 つの EdgeNGramTokenFilterV2s を使用してみましたが、これにより、「2」または「5」などの 2 つのフィルターを組み合わせて用語が作成されます。

1
12
123
23
3
4
45
456
56
6
2 // Unwanted
5 // Unwanted

「逆」トークンも使用してみましたが、これはすべてを逆にし、結果はまだ間違っています。

検索フィールド (「名前」) を 1 つしか使用していませんが、このままにしておきたいと思います。(別のアナライザーで「name_reverse」という名前の別のフィールドを使用するオプションを考えましたが、これは非常に非効率的であり、検索エンジンをデータ ソースに接続するときに多くの頭痛の種になります。

簡単に参照できるように、これは現在のインデックス作成リクエストです。

{
 "name": "testindexboth",  
 "fields": [
  {"name": "id", "type": "Edm.String", "key": true },
  {"name": "Name", "type": "Edm.String", "searchable": true, "analyzer": "myAnalyzer"}
 ],
 "myAnalyzer": [
  {
   "name": "myAnalyzer",
   "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
   "tokenizer": "standard_v2",
    "tokenFilters":["front_filter", "back_filter"]
  }],

    "tokenFilters":[
            {
               "name":"front_filter",
               "@odata.type":"#Microsoft.Azure.Search.EdgeNGramTokenFilterV2",
               "maxGram":15,
               "side": "front"
            },
                        {
               "name":"back_filter",
               "@odata.type":"#Microsoft.Azure.Search.EdgeNGramTokenFilterV2",
               "maxGram":15,
               "side": "back"
            }
        ]
}

結果を混乱させることなく、両方を組み合わせるオプションはありますか?

4

1 に答える 1