通过天蓝色搜索过滤器返回带重音符号和正常结果集

时间:2020-07-17 15:09:31

标签: azure search lucene odata azure-search-.net-sdk

是否有人知道如何确保通过天蓝色搜索过滤器返回正常结果以及重音结果集。例如,当我检查名称为unicorn的记录时,Azure搜索中的以下过滤器查询将返回一个名称为unicorn的名称。

 var result= searchServiceClient.Documents.SearchAsync<myDto>("*",new SearchParameters
            {
                SearchFields = new List<string> {"Name"},
                Filter = "Name eq 'unicorn'"
            });

这一切都很好,但我要编写一个过滤器,使其返回名为 unicorn 的记录以及名为únicorn的记录(请注意第一个重音符号),前提是两个记录都存在。

link中所述,使用语言或标准ASCII折叠搜索分析器通过搜索查询来搜索此类名称时,可以实现此目的。我正在努力寻找的是如何使用天蓝色滤镜实现相同的效果?

请让我知道是否有人对此有任何解决方案。

2 个答案:

答案 0 :(得分:1)

使用过滤器将不起作用,除非您事先指定所有可能性:

例如:

$filter=name eq 'unicorn' or name eq 'únicorn'

您最好使用其他分析器,将其重音符号更改为其根音形式。另一种可能性是,您可以尝试模糊搜索:

search=unicorn~&highlight=Name

答案 1 :(得分:1)

过滤器应用于未分析的数据表示形式,因此我认为无法对过滤器进行任何类型的语言分析。解决此问题的一种方法是手动创建一个仅进行小写+粗体转换(不进行标记化)的字段,然后搜索如下所示的lucene查询:

    "normal search query terms" AND customFilterColumn:"filtérValuèWithÄccents"

基本上,该文档既需要匹配任何字段中的搜索词,也需要匹配“ customFilterColumn”中的过滤器词。这可能不足以满足您的需求,但至少您了解可能的技巧。