当搜索包含特殊字符时,Azure 搜索服务筛选器 search.ismatch() 未返回正确结果
Posted
技术标签:
【中文标题】当搜索包含特殊字符时,Azure 搜索服务筛选器 search.ismatch() 未返回正确结果【英文标题】:Azure Search Service filter search.ismatch() not returning correct result when search contains special characters 【发布时间】:2022-01-09 19:26:55 【问题描述】:我在 Azure 搜索服务的过滤器中使用 search.ismatch(),当我的搜索词包含特殊字符(如 [-,&,;])时,它不会给出正确的结果。以下是详细内容
调用的函数是search.ismatch('knet-q&a','fieldName','full','all') 在这里,我使用的是标准的 lucene 分析器,当返回结果时,它返回的结果除了具有 knet 之外,我希望它应该返回包含所有三个术语(knet、q、a)的结果。似乎只要看到一个特殊字符 azure 就会忽略其余字母,只返回具有 knet 术语的结果。
几个问题
-
这是上述正确行为还是 azure 返回结果方式中的错误
如果我使用客户分析器或关键字分析器进行过滤,请考虑在查询处理或类似分析器时不会考虑,因为它是过滤器而不是搜索词
如果在查询处理期间考虑使用分析器,最好使用关键字分析器,它会在索引和搜索期间保留所有特殊字符,我可以传递正则表达式来匹配特殊字符
提前致谢
谢谢 普拉提克
【问题讨论】:
【参考方案1】:1-据我所知是正确的。默认分析器会删除特殊字符。
2-您可以创建自定义分析器或使用不删除特殊字符的分析器,您只需要重新索引内容。
3-分析器将在索引时工作。
【讨论】:
以上是关于当搜索包含特殊字符时,Azure 搜索服务筛选器 search.ismatch() 未返回正确结果的主要内容,如果未能解决你的问题,请参考以下文章
最新的Azure SQL数据库实例中的Azure搜索服务与全文搜索?
使用特殊字符搜索单元格值时 VLOOKUP 的 Excel VBA 替代方案
PHP preg_grep -> 搜索词包含特殊字符的搜索数组