Я хочу, чтобы решить проблему, связанную с сортировкой на основе продуктов в категории:Solr сортировать по динамической колонке
У меня есть 3 таблицы
продукта
|-------id----------|-----name-------|
| p1 | Prod 1 |
| p2 | Prod 2 |
| p3 | Prod 3 |
| p4 | Prod 4 |
| p5 | Prod 5 |
|-------------------|----------------|
Категория
|-------id----------|-----name-------|
| c1 | Cat 1 |
| c2 | Cat 2 |
| c3 | Cat 3 |
| c4 | Cat 4 |
|-------------------|----------------|
Product_Category
|-----prod id-------|-----cat id-----|----score----|
| p1 | c1 | 120 |
| p1 | c2 | 130 |
| p2 | c1 | 150 |
| p2 | c3 | 120 |
| p2 | c2 | 140 |
| p3 | c2 | 180 |
| p3 | c3 | 160 |
|-------------------|----------------|-------------|
Это означает, что у меня есть продукты, перечисленные в нескольких категориях. У меня есть страница генерации списка динамически для каждой категории по запросу solr.
В настоящее время моего Solr документ выглядит
{
product_id:p1,
category_id:[c1, c2]
}
Челленджа я столкнулся в настоящее время мне нужно поддерживать сортировку на основе продукции категории веса, т.е. листинга страницы c1 будет иметь продукты p2, p1 в порядке и перечислении с3 будет p3, p2, p1
(убывания количества набранных баллов) Если изменить схему, как Доку выглядеть
{
product_id:p1,
category_id:[c1, c2],
c1_weight: 120,
c2_weight: 130
}
Таким образом, мне нужно добавить поле cx_weight до схемы каждый раз, когда мы добавляем новую категорию, чтобы я мог сортировать по полю cx_weight.
Дайте мне знать решение, в котором я могу использовать механизм сортировки solr для сортировки по весу категории и не нужно менять схему каждый раз, когда добавляю категорию.
Благодаря Dheerendra
Причина в том, продукт имеет много других полей, мне нужно будет запрашивать на как цена, вес, доставка бесплатно и т. д., тогда эти поля также будут повторяться в каждом документе. В общем, описанная выше техника делает систему тяжелой, если у меня есть 1M-продукты в моей системе, и в среднем, если продукт может быть связан с 5 категориями, тогда у меня будет 5M-документы только для двух полей, изменяющих i.e. category_id и weight. –
Lucene кодирует значения полей с таблицей символов, подобной хранилищу столбцов. В общем, дублирование данных не так проблематично, как с реляционной БД. –
Вы также можете посмотреть функциональность соединения Solr, чтобы узнать, можете ли вы сделать простой продукт, связанный с продуктом/категорией, но это займет немного больше работы. –