【问题标题】:Can an Azure Search query using Lucene query syntax have a filter with a geo.distance function AND another filter criteria?使用 Lucene 查询语法的 Azure 搜索查询是否可以有一个带有 geo.distance 函数和另一个过滤条件的过滤器?
【发布时间】:2019-10-23 11:57:55
【问题描述】:

我正在查询一个 Azure 搜索索引,其中包含使用 Lucene 语法的列车时刻表停靠点,并使用 geo.distance 函数和出发时间值(表示为从午夜开始的分钟数)进行过滤。当我有 geo.distance 时,查询有效在过滤器中单独使用函数,或将出发时间作为唯一过滤器,但同时使用 AND(或 &&)会返回无效的表达式语法错误。

{ "搜索":"站名:内珀维尔", "queryType":"full", "filter":"geo.distance(location, geography'POINT(-88.145118 41.775038)') le 1.0 AND leaveTimeInMinutes ge 1400" }

上述查询的错误信息是: { “错误”: { “代码”: ””, "message": "无效的表达式:'geo.distance(location, geography'POINT(-88.145118 41.775038)') le 1.0 AND leaveTimeInMinutes ge 1400' 中位置 73 处的语法错误。\r\n参数名称:$filter" } }

非常感谢任何帮助!提前谢谢你

【问题讨论】:

    标签: odata geospatial azure-cognitive-search


    【解决方案1】:

    对于发布和回答我自己的问题,我深表歉意 - 但我刚刚了解到 Azure 搜索的 OData 表达式语法非常区分大小写。我的小写“and”查询有效。

    我的问题中的以下查询版本是成功的: { "搜索":"站名:内珀维尔", "queryType":"full", “过滤器”:“geo.distance(位置,地理'POINT(-88.145118 41.775038)')le 1.0和departmentTimeInMinutes ge 1400” }

    【讨论】:

    • 很高兴您找到了解决方案!这种情况特别棘手,因为完整的 Lucene 语法也是区分大小写的,并且在这种情况下逻辑运算符的语法是全大写的。所以它在 Lucene 查询和/或 OData 过滤器中是 AND/OR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多