2

私はこの質問について調査しましたが、近いものは何も見つかりませんでした。だから私は尋ねることにしました。Stackoverflowは私にとって大きな助けになりました。

私はjobs1つの属性が場所であるテーブルを持っています。それぞれjob.locationがニューヨーク、ボストン、またはその両方(ニューヨークとボストン)にあります。

レールの黒点solrで、この属性のファセットを作成して、ajob.locationが両方の都市にある場合、ファセットでニューヨークまたはボストンのいずれかが選択されたときにジョブを結果に表示できるようにするにはどうすればよいですか?

配列のようにする必要があり['New York', 'Boston']ますか?

ありがとう!

4

1 に答える 1

1

has_and_belongs_to_many :locations多対多の関係であるため、別のLocationクラスを持つように設計を変更し、Jobクラスを設定する必要があります。次に、Jobクラスの検索可能なブロックに場所の整数スコープを作成できます。

integer :locations, :multiple => true

ジョブごとに複数の場所を許可します。

facet(:locations)これで、必要なことを正確に実行するを追加するのは簡単です。

上記は、2つだけでなく、任意の数の場所で機能します。ただし、新しいクラス/テーブルを作成せず、場所が1つまたは2つしかない場合は、クエリスコープフィールドを作成するだけです。

integer :locations, :multiple => true do
  if location == 'NY & Boston'
    ['NY', 'Boston']
  else
    [location]
  end
end
于 2013-03-11T12:16:46.940 に答える