3

私はsunspot/railsバージョン2を使用しています。これはうまく機能していますが、欠落しているフィールドを処理する方法がわかりません。緯度と経度がない場合、このコードはそれを0,0(アフリカの近く)にマップします。

searchable do
  text      :resume, :stored => true
  text      :city, :boost => 5
  latlon(:geo) { Sunspot::Util::Coordinates.new(latitude, longitude) }
end

それぞれ条件が異なる2つの検索ブロックを使用してみましたが、sunspotは最初の検索可能なブロックのみを使用します。私がしたいのは、場所だけでなく、場所が欠落しているものを引き続き検索できるようにすることです。

4

2 に答える 2

3

はい、通常、オプションの条件の後にifチェックがあります。

searchable do
  text      :resume, :stored => true
  text      :city, :boost => 5
  latlon(:geo) { Sunspot::Util::Coordinates.new(latitude, longitude) } if latitude && longitude
  # other conditions if needed
  with(:another_field, condition_var) if condition_var
end
于 2012-06-18T06:55:36.970 に答える
1

回避策を考えました。または何かと呼ばれるブールフィールドを追加しhas_location、地理検索を行うときに常にそれをチェックします。Kludgyですが、動作するはずです。

于 2012-06-06T22:41:38.170 に答える