Cha*_*nce 1 solr ruby-on-rails sunspot ruby-on-rails-3 websolr
我希望在Rails 3.1应用程序中使用Solr进行文本和地理空间搜索.我看到websolr支持地理空间索引和搜索,但它的两个宝石(太阳黑子和rsolr)似乎(目前)没有实现它.太阳黑子似乎正在添加功能,但声称"[地理空间]是实验性的和未发布的.DSL可能会发生变化."
是否还有使用太阳黑子+ websolr进行地理空间搜索的其他实现?我已经做了一些googing并且碰到了一些,但是他们看起来很骇人听闻,如果已经有一个核心功能或者更受支持的方法,我宁愿不使用我发现的东西.
太阳黑子确实支持地理空间搜索,但有一些限制.
索引:
searchable do
text :location
location :coordinates do
Sunspot::Util::Coordinates.new latitude, longitude
end
end
Run Code Online (Sandbox Code Playgroud)
搜索:
coord = # whatever...
with(:coordinates).near(coord[0], coord[1], :precision => 3)
Run Code Online (Sandbox Code Playgroud)
但它真的不准确......如果我没弄错的话,它会使用地理哈希.因此,2点可能彼此接近但未找到.
此外,您不能嵌入near
切面.
我会按照ADAM的建议去寻找弹性搜索.这就是我做的.你得到了更多的控制权.
Tire还支持地理空间搜索,但DSL中没有特定的方法,因为它不需要.他们计划稍后再添加它们.
索引:
tire.mapping do
indexes :location, type: 'string', analyzer: 'snowball'
indexes :latitude_longitude, type: 'geo_point'
end
def latitude_longitude
[latitude, longitude].join(",")
end
def to_indexed_json
to_json(methods: ['latitude_longitude'])
end
Run Code Online (Sandbox Code Playgroud)
搜索:
filter :geo_distance, distance: "#{distance}km", latitude_longitude: [user.latitude, user.longitude].join(",")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1881 次 |
最近记录: |