【问题标题】:Lucene Query - AND operator failing in Azure Search?Lucene 查询 - 与运算符在 Azure 搜索中失败?
【发布时间】:2016-07-04 13:03:13
【问题描述】:

我有一个三明治搜索索引。该索引包含三个字段: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"
}

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

【问题讨论】:

    标签: lucene azure-cognitive-search


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多