2016-06-01 4 views

答えて

1

ThinkingSphinxまたはApache Solrを使用してください。両方にファセットが組み込まれています。あなたは自分自身をロールすることができますが(別の細かい答えに示されています)、私の経験では、実際の検索エンジンを追加し、そこにあるファセット機能や他の検索機能を利用する方が良いと言います。私はすべての新しい開発にSolrを使用していますが、ThinkingSphinxはセットアップがやや簡単で、優れた候補になる新しい機能(主なものは連続的なインデックス作成)があります。

+0

私は別のプロジェクトでElasticSearchを使用していましたが、これは素晴らしいことでしたが、私はこれと同じリソースを持っていないので、DBやRailsで直接実行できる必要があります。 – Avishai

+0

私はMichaelに同意しますが、この解決法ははるかにクリーンです。しかし、いくつかのレコードで小さなアプリケーションを実行すると、少し過剰です。im – basgys

0

私はRailsは上図のような簡単なフォームフィルタを実装するのに十分強力であると思います。

あなたは良いデータモデルを持っている必要がありますし、それはパイとして簡単です。

例:あなたがsimple_formを使用することができますが

E/R example

は、フォームの作成を簡単にするために、それは間違いなくオプションです。

+0

これは素晴らしい例です。 {Blue:50、Red:25、Black:182}、サイズ:{Compact:75、Midsize:122}などのように、Postgresからファセット結果のカウントを取得するにはどうすればよいですか? – Avishai

+1

色から選択カウントを行い、車に参加し、次に色でグループ化することができます。サイズについても同じです。 – basgys

0
select 
    (
     select json_object_agg(COALESCE(brand_id, 'null'), cnt) 
     from (
      select brand_id, COUNT(*) as cnt 
      from unnest(array_agg(brand_id)) as tmp(brand_id) 
      group by brand_id 
     ) ttt 
    ), 
    min(price) as price_min, 
    max(price) as price_max 
from product 
WHERE is_visible = true 
+0

SQLがうまく見えますが、私はこれが元の質問に答えるとは思わないことに注意してください。 PostgresのバックエンドとRoRのフロントエンド "です。より完全な答えには、「答えに似たクエリを実行するページ分割されたAPIエンドポイントを呼び出す」などがあります。 – MSC

関連する問題