私は、プロパティリストのアドレスを検索するのに効果的な検索方法を持っています。しかし、特定のテキストフィールドの値に基づいてそれらの結果をフィルタリングする方法を理解することはできません。ここで私が持っているものです。Sunspot Solrの結果をフィルタリングする
search = Listing.search do
fulltext attributes[:address] + " -'Off Market'"
with(:field_BedsTotal).greater_than_or_equal_to attributes[:field_BedsTotal]
with(:field_BathsFull).greater_than_or_equal_to attributes[:field_BathsFull]
end
だから、ユーザーinputedアドレス(市場オフになっていることをいずれも破棄)を探しています、とだけベッドや風呂も大きいか、ユーザーが選択したものに等しいとの結果を返します。
しかし、 "field_PropertySubType"と呼ばれるフィールドには、値として "Condo"または "Single Family"があります。ユーザーがチェックできるチェックボックスがあります(属性[:condo]、属性[:single_family])。 field_PropertySubTypeのこれらの値で検索結果をフィルタリングするにはどうすればよいですか?私はファセットで推測していますが、私の特定のシナリオに役立つ十分な文書を見つけることができません。 field_PropertySubTypeフィールドを検索可能なリストにテキストとして追加しました。しかし、私はそれが唯一の代わりに(アドレスとコンドミニアムに一致する)、それらをフィルタリングする(アドレスやコンドミニアム」と一致するもののような)の結果に追加されます「全文」に追加した場合のおかげ
EDIT:。!
小面を試したが、かなりの構文が正しくなっていない:
searchable do
text :field_StreetNumber, :field_StreetName, :field_StreetSuffix, :field_City
string :field_PropertySubType, :field_PropertyType
end
def self.filter(attributes)
search = Listing.search do
fulltext attributes[:address]
facet :field_PropertySubType, exclude: with(:field_PropertySubType,"Single Family") if params[:single_family].present?
end
end
上記の私の編集をご覧ください。多分あなたはさらに助けてくれるかもしれません。私は構文がかなり正しいわけではない。 – bjacobs
アップデートを確認してください。これはおそらく役に立ちます.. –
ありがとうございます。しかし、それは私に "SystemStackError(スタックレベルが深すぎます)"エラーを発生させます。 Ruby 2.3.1とレール5.0.0を使用しています – bjacobs