私のプロジェクトでは、Linqを使用してファセット検索を実装しようとしています。Solr、Luceneなどは使いたくない...
私のDB:
製品
+----+------+
| id | name |
+----+------+
| 1 | prod1|
+----+------+
| 2 | prod2|
+----+------+
属性
+----+--------+---------+
| id | name | alias |
+----+--------+---------+
| 1 | Weight | weight |
+----+--------+---------+
| 2 | Height | height |
+----+--------+---------+
値
+----+---------------+---------+---------+
| id | attribute_id | value | alias |
+----+---------------+---------+---------+
| 1 | 1 | 10 g | 10m |
+----+---------------+---------+---------+
| 2 | 1 | 20 g | 20m |
+----+---------------+---------+---------+
| 3 | 2 | 10 m | 10m |
+----+---------------+---------+---------+
| 4 | 2 | 20 m | 20m |
+----+---------------+---------+---------+
products_values
+---------------+---------+
| product_id | value_id|
+---------------+---------+
| 1 | 1 |
+---------------+---------+
| 1 | 2 |
+---------------+---------+
| 1 | 3 |
+---------------+---------+
| 2 | 1 |
+---------------+---------+
selectのクエリ。例:site.com/filter/weight=10g_20g;height=10h/
フィルタのPOCOモデル:
public class Filter
{
public string Attribute { get; set; }
public IEnumerable<Value> Values{ get; set; }
}
このモデルは、カスタムモデルバインディングに使用されます。
しかし、これからは、フィルターモデルを埋めたので、select製品を実装し、フィルターで「アクティブな」値を選択する方法がわかりません(カウントが有効な製品を使用)。投入フィルターと製品テーブルを分離する必要がありますか?または、単一のアクションである可能性がありますか?Linqを使用してファセット検索を実装するためのステップバイステップガイドを見てうれしいです。