通过Azure搜索筛选器返回重音和正常结果集

dwthyt8l  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(190)

有没有人知道如何确保我们可以通过Azure搜索过滤器返回正常结果以及重音结果集。例如,当我检查名为unicorn的记录时,Azure搜索中的below filter查询返回名为unicorn的名称。

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

这一切都很好,但我想要的是,我想写一个过滤器,使其返回名为unicorn的记录以及名为únicorn的记录(请注意第一个重音字符),前提是这两个记录都存在。
这可以通过使用语言或标准ASCII折叠搜索分析器的搜索查询来搜索这样的名称时实现,如在此link中提到的。我正在努力寻找的是,我们如何才能实现相同的Azure过滤器?
请让我知道,如果有人有任何解决办法。

dw1jzc5e

dw1jzc5e1#

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

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

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

7ivaypg9

7ivaypg92#

使用过滤器它不会工作,除非你事先指定所有的可能性:
例如:
$filter=name eq 'unicorn' or name eq 'únicorn'
你最好使用一个不同的分析器,它会将重音改变为它的根形式。作为另一种可能性,你可以尝试模糊搜索:

search=unicorn~&highlight=Name

相关问题