В моем проекте я пытаюсь реализовать Граничный поиск с использованием Linq. Я не хочу использовать Solr, Lucene и т.д ...Граничный поиск в linq
Мой 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 |
+---------------+---------+
Запрос для выбора, например, : site.com/filter/weight=10g_20g;height=10h/
ПОКО модель для фильтра:
public class Filter
{
public string Attribute { get; set; }
public IEnumerable<Value> Values{ get; set; }
}
Эта модель использует для пользовательской модели связывания.
Но теперь, заполнив модель фильтра, я не знаю, как реализовать выбор продуктов и выбирать «активные» значения в фильтре (с включенными функциями подсчета). Таблица заполнения фильтров и продуктов должна быть разделена? Или, может быть, в одном действии? Я рад видеть пошаговое руководство по реализации фасетного поиска с использованием Linq.