标题不清楚所以让我解释一下:
在我的应用中,我有活动。它们是地理定位的:我存储纬度和经度。
我的问题是,当用户搜索事件时,他们会输入以下内容:kansas
,montreal
等。
因此,当我找到kansas
(使用地理编码器)时,我得到它的“中心”,所以当我向太阳黑子询问“靠近”这个位置的事件时,我只能得到靠近该位置中心的那些。如果他们输入france
或australia
,情况会更糟。
我想知道你是否知道如何处理这个问题。
我现在唯一的想法是在保存事件时保存事件所在位置的country
,state
等(我可以从谷歌获取规范化地址),然后执行文字搜索他们在位置字段中输入的内容...
但是这个方法存在问题:(
在solr中,不可能执行以下操作:
any_of do
with(:coordinates).near(coord[0], coord[1], :precision => 3)
keywords where
end
因为near
无法嵌套。 See here.
他们是否在太阳黑子1.3中进行了更改?
你还有其他解决方案吗?我甚至可以接受从solr转换到另一个搜索平台,如弹性搜索,但我不愿意。
答案 0 :(得分:1)
我切换到ElasticSearch,我非常喜欢它。对于地理定位搜索来说它好多了......我仍然有一些方面的问题,但总的来说,我会建议ES为太阳黑子开始一个新的应用程序。