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

时间:2016-07-04 02:58:06

标签: lucene 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

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

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

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

1 个答案:

答案 0 :(得分:2)

您需要使用“queryType”:“full”来请求Lucene语法。请参阅example on MSDN

尽管如此,使用过滤器可以更轻松,更有效地完成您要完成的任务。假设您将索引中的相关字段设置为可过滤,则可以使用以下过滤器表达式作为示例:$ filter =(meat eq'Ham'或meat eq'Turkey')和bread eq'Wheat'。有关过滤器的更多信息,请参阅this article。希望这可以帮助!