Azure 搜索和破折号

2024-03-29

我正在使用 Azure 搜索并尝试对文档执行搜索:

看起来好像是这样做的:/indexes/blah/docs?api-version=2015-02-28&search=abc\-1003

返回与此相同的结果:/indexes/blah/docs?api-version=2015-02-28&search=abc-1003

由于转义反斜杠,第一个返回的结果不应该与第二个返回不同的结果吗?据我了解,反斜杠应该允许对整个“abc-1003”字符串进行精确搜索,而不是执行“not”运算符。

(更多信息在这里:https://msdn.microsoft.com/en-us/library/azure/dn798920.aspx https://msdn.microsoft.com/en-us/library/azure/dn798920.aspx)

我可以让它工作的唯一方法是这样做(注意双引号):/indexes/blah/docs?api-version=2015-02-28&search="abc-1003"

我宁愿不这样做,因为这意味着让用户输入引号,而他们不知道该怎么做。

我是否在期待某些不该期待的内容,或者这可能是 Azure 搜索的错误吗?


首先,前面没有空格的破折号就像破折号,而不是否定运算符。

根据 MSDN 文档简单的查询语法 https://msdn.microsoft.com/en-us/library/azure/dn798920.aspx

- Only needs to be escaped if it's the first character after whitespace, not if it's in the middle of a term. For example, "wi-fi" is a single term

其次,除非您使用的是为您的索引定制分析器 https://azure.microsoft.com/en-us/blog/custom-analyzers-in-azure-search/,分析器会将破折号视为空白,并且会中断abc-1003分成两个令牌,abc and 1003.

然后当你把它放在引号中时"abc-1003"它将被视为对短语的搜索abc 1003,从而返回您期望的结果。

如果你想精确匹配abc-1003考虑使用过滤器代替。它速度更快,并且可以将诸如指南或带有破折号的文本之类的内容匹配

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 搜索和破折号 的相关文章

随机推荐