通过 azure 搜索过滤器返回重音和正常结果集

Returning accented as well as normal result set via azure search filters

有谁知道如何确保我们可以 return 正常结果以及通过 azure 搜索过滤器的重音结果集。例如,当我检查名为 unicorn 的记录时,Azure 搜索中的以下过滤器查询 returns 一个名为 unicorn 的名称。

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

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

这可以在使用语言或标准 ASCII 折叠搜索分析器通过搜索查询搜索此类名称时实现,如本 中所述。我正在努力寻找的是我们如何使用 azure 过滤器实现相同的功能?

如果有人对此有任何解决方案,请告诉我。

除非您事先指定所有可能性,否则使用过滤器将无法工作:

例如:

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

您最好使用不同的分析器,将重音更改为其词根形式。作为另一种可能性,您可以尝试模糊搜索:

search=unicorn~&highlight=Name

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

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

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