我正在查询包含火车时刻表的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” } }
任何帮助深表感谢!预先谢谢你
答案 0 :(得分:2)
我很抱歉张贴并回答我自己的问题-但我刚刚了解到Azure搜索的OData表达式语法非常区分大小写()。我的查询使用小写的“和”。
我的问题中的以下查询版本成功: { “搜索”:“ stationName:内珀维尔”, “ queryType”:“完整”, “ filter”:“ geo.distance(location,geography'POINT(-88.145118 41.775038)')le 1.0 and awayTimeTimeInMinutes ge 1400” }