2017-07-11 9 views
0

私は、プロパティリストのアドレスを検索するのに効果的な検索方法を持っています。しかし、特定のテキストフィールドの値に基づいてそれらの結果をフィルタリングする方法を理解することはできません。ここで私が持っているものです。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 

答えて

0

それは、ことになった:

facet :field_PropertySubType, exclude: [with(:field_PropertySubType, "Single Family")] 

周囲に必要な角かっこが付いています。

0

はい、あなたは正しいです..あなたはfacetsを使用する必要があります、以下の

facet :field_PropertySubType, exclude: with(:field_PropertySubType, attributes[:field_PropertySubType] 
のようなもの

ただし、fulltextはファセットをサポートしていないため、このフィールドにはstringというインデックスを付ける必要があります。

更新

オプションはselected..youはelse文は必要でない場合は、あなたのif声明で、ファセットが作成されていないので...

if params[:single_family].present? 
    facet :field_PropertySubType, exclude: with(:field_PropertySubType,"Single Family") 
else 
    facet :field_PropertySubType 
end 
+0

上記の私の編集をご覧ください。多分あなたはさらに助けてくれるかもしれません。私は構文がかなり正しいわけではない。 – bjacobs

+0

アップデートを確認してください。これはおそらく役に立ちます.. –

+0

ありがとうございます。しかし、それは私に "SystemStackError(スタックレベルが深すぎます)"エラーを発生させます。 Ruby 2.3.1とレール5.0.0を使用しています – bjacobs

関連する問題