caj*_*caj 6 azure azure-cognitive-search
我正在使用 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)
我可以让它工作的唯一方法是这样做(注意双引号): /indexes/blah/docs?api-version=2015-02-28&search="abc-1003"
我宁愿不这样做,因为这意味着让用户输入引号,而他们不知道该怎么做。
我是否在期待一些我不应该做的事情,或者它可能是 Azure 搜索的一个错误?
首先,不以空格开头的破折号就像破折号,而不是否定运算符。
根据简单查询语法的 MSDN 文档
- 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
Run Code Online (Sandbox Code Playgroud)
其次,除非您为 index使用自定义分析器,否则破折号将被分析器视为几乎像空格一样,并将分解abc-1003
为两个标记,abc
并且1003
.
然后,当您将它放在引号中时"abc-1003"
,它将被视为对短语的搜索abc 1003
,从而返回您期望的内容。
如果您想完全匹配,请abc-1003
考虑使用过滤器。它更快,并且可以匹配诸如 guids 或带有破折号的文本之类的东西
归档时间: |
|
查看次数: |
3189 次 |
最近记录: |