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

如何在空间搜索和常规查询之间组合执行Solr或查询?,solr,geocoding,geospatial,Solr,Geocoding,Geospatial,Solr文档提示您可以将空间函数(如geodist())与常规查询相结合,但我无法确定正确的语法 特别是这一行()引起了我的注意: 或者,您可以将距离函数用作主查询(或其一部分),以获取距离作为文档分数: …&q={!func}geodist()&sfield=store&pt=45.15,-93.85&sort=score asc 按照该页面上的商店库存示例,我想做的是“查找给定城市内或城市距离给定范围内的所有商店”。我可以很容易地分别完成这两项工作,但我很难将它们结合起来 下面是一个伪查询,

Solr文档提示您可以将空间函数(如
geodist()
)与常规查询相结合,但我无法确定正确的语法

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

或者,您可以将距离函数用作主查询(或其一部分),以获取距离作为文档分数:

…&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公里范围内的商店,因此,查找具有
店面城市的商店:“洛杉矶”
将包括丢失的结果


对于奖励积分,我也很好奇如何评分,以确保城市内的商店排名高于城市外的商店——但这是次要的,而且很可能是我能弄明白的:)

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

..&q=存储城市:布法罗或 _查询:“{!geofilt sfield=location pt=45.15,-93.8 d=5}”


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

..&q=存储城市:布法罗或 _查询:“{!geofilt sfield=location pt=45.15,-93.8 d=5}”


您好,我也对“查找给定城市内的所有商店”感兴趣,我如何使用Solr实现这一点?这是否需要像反向地理编码这样的想法,以便为Solr提供城市信息?您好,我也对“查找给定城市内的所有商店”感兴趣,我如何用Solr做到这一点?这是否需要像反向地理编码这样的想法,以便为Solr提供城市信息?