如何组合在空间搜索和常规查询之间执行Solr OR查询?

时间:2012-12-06 21:17:06

标签: solr geocoding geospatial

Solr SpatialSearch文档暗示您可以将geodist()等空间函数与常规查询结合起来,但我无法确定正确的语法。

特别是这一行(in the geodist section)引起了我的注意:

  

或者您可以使用距离函数作为主查询(或其中的一部分)来获取文档得分的距离:

     

...& q = {!func} geodist()& sfield = store& pt = 45.15,-93.85& sort = score asc

在该页面上的商店库存示例之后,我想要做的是“在给定城市内或在城市的给定距离内找到所有商店”。我可以很容易地单独完成,但是很难将它们结合起来。

这是一个伪查询,希望澄清我正在尝试做的事情:

...&q=storecity:Buffalo OR {!func}geodist(store,45.15,-93.8)&d=5

预期的结果将是布法罗的每家商店,或布法罗的5公里范围内。用例适用于非常大的城市,例如洛杉矶。如果我说距离洛杉矶5公里范围内的所有商店,它只能找到距坐标5公里范围内的商店,所以寻找storecity:"Los Angeles"的商店将包括丢失的结果。

对于奖励积分,我也很好奇我是如何得分以确保城市内的商店排名高于外部 - 但这是次要的,可能我可以弄清楚:)

1 个答案:

答案 0 :(得分:1)

您可以使用以下查询来获得预期结果。

  

..& q = storecity:Buffalo OR   _query_:“{!geofilt sfield = location pt = 45.15,-93.8 d = 5}”