【问题标题】:Create an EdgeNGram analyzer supporting both sides in Azure Search在 Azure 搜索中创建支持双方的 EdgeNGram 分析器
【发布时间】:2018-03-27 03:35:21
【问题描述】:

为 Azure 搜索定义自定义分析器时,可以选择从 this 列表定义令牌过滤器。 我正在尝试支持搜索前缀和中缀。 例如:如果一个字段包含名称:123 456,我希望可搜索的词包含:

1
12
123
23
3
4
45
456
56
6

使用似乎可以解决问题的 EdgeNGramTokenFilterV2 时,可以选择定义“side”属性,但仅支持“front”和“back”,而不支持两者。 “front”(默认)值生成此列表:

1
12
123
4
45
456

然后返回生成:

123
23
3
456
56
6

我尝试使用两个令牌和两个 EdgeNGramTokenFilterV2,但这会通过组合两个过滤器创建术语,例如:“2”或“5”:

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

我也尝试使用“反转”令牌,但这会反转所有内容,结果仍然错误。

我只使用一个搜索字段(“姓名”),并且希望它保持这种状态。 (想过用不同的分析器使用名为“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"
            }
        ]
}

是否可以选择将两者结合起来,而不会让它们争夺结果?

【问题讨论】:

    标签: search analyzer azure-cognitive-search elasticsearch-analyzers


    【解决方案1】:

    使用两种不同的自定义分析器向您的索引添加两个字段:一个用于前缀,一个用于后缀。查询时,查询两个字段。

    【讨论】:

    • 它肯定会工作,但看起来有点像黑客,你不觉得吗?它还迫使我使用字段映射函数。
    • 对两个字段进行搜索,使用未反转的字段进行提取,选择反转的数据没有意义,同意,这是低效的。详细解决方案:github.com/mannu2050/Azure-Search-prefix-postfix-search/blob/…
    猜你喜欢
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多