使用Lucene查询语法的Azure搜索查询是否可以具有带有geo.distance函数和另一个过滤条件的过滤器?

时间:2019-06-08 04:29:19

标签: odata geospatial azure-search

我正在查询包含火车时刻表的Azure搜索索引,该索引使用Lucene语法以及使用geo.distance函数和出发时间值(表示为从午夜开始的分钟数)的过滤器停止。当我具有geo.distance时,该查询有效函数单独在过滤器中起作用,或者将离开时间作为唯一的过滤器,但同时在AND(或&&)中同时出现会返回无效的表达式语法错误。

{     “搜索”:“ stationName:内珀维尔”,     “ queryType”:“完整”,     “ filter”:“ geo.distance(location,geography'POINT(-88.145118 41.775038)')le 1.0 AND startingTimeInMinutes ge 1400” }

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

任何帮助深表感谢!预先谢谢你

1 个答案:

答案 0 :(得分:2)

我很抱歉张贴并回答我自己的问题-但我刚刚了解到Azure搜索的OData表达式语法非常区分大小写()。我的查询使用小写的“和”。

我的问题中的以下查询版本成功: {     “搜索”:“ stationName:内珀维尔”,     “ queryType”:“完整”,     “ filter”:“ geo.distance(location,geography'POINT(-88.145118 41.775038)')le 1.0 and awayTimeTimeInMinutes ge 1400” }