1

Rails3.1アプリでのテキスト検索と地理空間検索の両方にSolrを利用したいと考えています。websolrは地理空間のインデックス作成と検索をサポートしているようですが、その2つのgem(sunspotrsolr は(現在)それを実装していないようです。Sunspotは機能を追加しているようですが、「[地理空間は]実験的で未リリースです。DSLは変更される可能性があります」と主張しています。

sunspot + websolrを使用した地理空間検索の他の実装はありますか?私は少しグーグルをしていくつかに出くわしましたが、それらはハックっぽいようで、すでにコア機能が組み込まれている場合や、よりサポートされているアプローチがある場合は、見つけたものを使用したくありません。

4

2 に答える 2

7

Sunspot は地理空間検索をサポートしていますが、いくつかの制限があります。

索引付け:

searchable do
  text :location
  location :coordinates do
    Sunspot::Util::Coordinates.new latitude, longitude
  end
end

探す:

coord = # whatever...
with(:coordinates).near(coord[0], coord[1], :precision => 3)

しかし、それは本当に正確ではありません...私が間違っていなければ、ジオハッシュを使用しています。そのため、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

探す:

filter :geo_distance, distance: "#{distance}km", latitude_longitude: [user.latitude, user.longitude].join(",")
于 2012-01-21T21:26:49.037 に答える
2

後世のために:SunspotはSolr 3空間検索をサポートするバージョン1.3.0をリリースし、Websolrを使用するHerokuで完全に実行可能なオプションになりました。

于 2012-01-26T19:41:58.300 に答える