Lucene 查询 - AND 运算符在 Azure 搜索中失败?

Lucene Query - AND operator failing in Azure Search?

我有一个三明治的搜索索引。该索引包含三个字段:id、meat 和 bread。每个字段都是一个 Edm.String。在这个索引中,这是我的数据的一个子集:

ID | Meat       | Bread
-----------------------
1  | Ham        | White
2  | Turkey     | Hoagie
3  | Tuna       | Wheat
4  | Roast Beef | White
5  | Ham        | Wheat
6  | Roast Beef | Rye
7  | Turkey     | Wheat

我需要写一个查询 returns 小麦面包上的所有火腿或火鸡三明治。为了做到这一点,我创建了以下内容:

{
  "search":"(meat:(Ham|Turkey) AND bread:\"Wheat\")",
  "searchMode":"all",
  "select":"id,meat,bread"
}

当我 运行 这个查询时,我没有看到任何结果。我错过了什么?我究竟做错了什么?我试图理解完整的查询。字段级查询是否支持短语运算符?我不确定我做错了什么。

您需要使用 "queryType": "full" 来请求 Lucene 语法。看到一个 example on MSDN.

也就是说,使用 过滤器 可以更轻松、更高效地完成您想要完成的任务。假设您使索引中的相关字段可过滤,您可以在示例中使用以下过滤表达式:$filter=(meat eq 'Ham' or meat eq 'Turkey') and bread eq 'Wheat' .有关过滤器的更多信息,请参阅 this article。希望这可以帮助!