0

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

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

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

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

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

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

但事实并非如此。

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

有人可以帮我解释一下吗?

谢谢

4

1 回答 1

0

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

在这种情况下,在 URL 中转义“+”是一个问题(见评论)。URL 查询字符串中的搜索文本需要转义(例如 + 应该显示为 %2B,但最好使用库函数来转义所有输入搜索文本,而不是特殊大小写任何特定字符;在大多数环境,他们知道哪些角色需要转义)。

于 2015-02-04T05:58:22.563 回答