Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure搜索返回不一致的结果_Azure_Azure Cognitive Search - Fatal编程技术网

Azure搜索返回不一致的结果

Azure搜索返回不一致的结果,azure,azure-cognitive-search,Azure,Azure Cognitive Search,我有一个相当简单的索引,其中所有10个左右的字段都是可搜索的字符串,我的搜索模式是“全部” 为了简单起见,假设我发布了以下搜索: -(x | y | z) 我得到的所有文档中都没有x,y或z 假设我发布了以下搜索: (i+j) 我得到了所有包含术语I和j的文档 假设两次搜索返回的文档之间有相当大的重叠 如果我发布以下内容,我会认为在“所有”搜索模式下: (i+j)-(x | y | z) 我将得到不包含x、y或z的I和j的子集。换句话说,组合查询的结果将不包含来自单个查询结果的任何条目-(x |

我有一个相当简单的索引,其中所有10个左右的字段都是可搜索的字符串,我的搜索模式是“全部”

为了简单起见,假设我发布了以下搜索: -(x | y | z) 我得到的所有文档中都没有x,y或z

假设我发布了以下搜索: (i+j) 我得到了所有包含术语I和j的文档

假设两次搜索返回的文档之间有相当大的重叠

如果我发布以下内容,我会认为在“所有”搜索模式下: (i+j)-(x | y | z)

我将得到不包含x、y或z的I和j的子集。换句话说,组合查询的结果将不包含来自单个查询结果的任何条目-(x | y | z)

但事实并非如此

要么我误解了功能,要么我收到了错误的结果

有人能帮我解释一下吗


谢谢

Azure Search应该对此给出一致的答案,如果不让我们知道的话


在本例中,URL中转义“+”是一个问题(请参见注释)。URL查询字符串中的搜索文本需要转义(例如,+应显示为%2B,但最好使用库函数转义所有输入的搜索文本,而不是对任何特定字符进行特殊的大小写;在大多数环境中都有用于此的函数,它们知道哪些字符需要转义)。

在进一步探讨之前,让我快速问一个问题:您是否正在请求中转义+通常由URL处理堆栈将其替换为空间。搜索字符串中应该有%2B而不是+(更一般地说,你应该确保你的URL转义搜索输入)。Pablo-你是对的-事实上,对于中间服务,你必须从ui执行一次,才能将搜索字符串准确地发送到包装器web服务,然后针对实际的azure搜索端点再次执行。一切都按我想的那样进行。非常感谢你听到它起作用了。我在下面截取了它,作为将来可能遇到这种情况的其他人的答案。