在我的项目中,我正在尝试使用 Linq 实现 Faceted 搜索。我不想使用 Solr、Lucene 等...
我的数据库:
产品
+----+------+
| 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 |
+----+---------------+---------+---------+
产品价值
+---------------+---------+
| product_id | value_id|
+---------------+---------+
| 1 | 1 |
+---------------+---------+
| 1 | 2 |
+---------------+---------+
| 1 | 3 |
+---------------+---------+
| 2 | 1 |
+---------------+---------+
查询选择,例如:site.com/filter/weight=10g_20g;height=10h/
过滤器的 POCO 模型:
public class Filter
{
public string Attribute { get; set; }
public IEnumerable<Value> Values{ get; set; }
}
此模型用于自定义模型绑定。
但是从现在开始,填充过滤器模型后,我不知道如何实现选择产品并在过滤器中选择“活动”值(启用计数的产品)。填充过滤器和产品表必须分开吗?或者,可能是单次行动?我很高兴看到使用 Linq 实现分面搜索的分步指南。