4

sunspot solrでは、ファセットを介して同様の属性を持つレコードをグループ化できます。しかし、2つの属性からファセットフィルターを実行することは可能ですか?

私は自分の検索でこれをやってみました:

facet_search = User.search do
  facet :attribute1, :attribute2
end


facet_search.facet(:attribute1, :attribute2)

これにより、nil値を取得し続け、attribute1とattribute2に同様の値を持つレコードがあると確信しています。

attribute1に「orange」という値を持つレコードが2つあるとします。そして、これら2つのレコードには、attribute2に「ワシ」としての値があります。

2つの列に基づいてレコードをグループ化するために使用できるsunspotの機能はありますか?それを行うにはどうすればよいですか?

よろしくお願いします。

4

1 に答える 1

6

本当にフィルタリングしたいのですか?ファセットは、その属性の一意の値の上位n個を戻すだけです。したがって、attribute1に色が含まれている場合は、オレンジ、赤、青などが返されます。現在の検索に一致する任意の一意の色。ファセットだけでは、検索結果はフィルタリングされません。

あなたの質問から、attribute1の値とattribute2の値でフィルタリングしたいと思います。これを行うには、検索は次のようになります。

facet_search = User.search do
  # Filter my results...
  with(:attribute1).equal_to("orange")
  with(:attribute2).equal_to("eagle")
end

facet :attribute1UIなどに表示するattribute1の一意の値を取得する場合は、ifを含めることができます。:attribute1をファセットとして宣言しても、検索にフィルターが適用されないことに注意してください。

于 2011-04-08T16:25:02.063 に答える