chcę rozwiązać problem związany z sortowania na podstawie produktów w kategoriach:Solr porządek na dynamicznym kolumnie
mam 3 tabele
produktu
|-------id----------|-----name-------|
| p1 | Prod 1 |
| p2 | Prod 2 |
| p3 | Prod 3 |
| p4 | Prod 4 |
| p5 | Prod 5 |
|-------------------|----------------|
Kategoria
|-------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 |
|-------------------|----------------|-------------|
Oznacza to, że mam produkty wymienione w wielu kategoriach. Mam dynamicznie generować stronę listy dla każdej kategorii przez zapytanie Solr.
Obecnie mój solr doc wygląda
{
product_id:p1,
category_id:[c1, c2]
}
Wyzwanie Jestem stoi teraz muszę obsługiwać sortowania na podstawie kategorii wagi produktu, czyli listą stronę c1 będą miały produkty P2, P1 w porządku i szczegóły od C3 będzie P3, P2, P1
(kolejność punktów malejąco) Jeśli zmienić schemat podobny do doc wyglądać
{
product_id:p1,
category_id:[c1, c2],
c1_weight: 120,
c2_weight: 130
}
ten sposób muszę dodać pole cx_weight do schematu za każdym razem, gdy dodamy nową kategorię, dzięki czemu mogę sortować według pola cx_weight.
Daj mi znać, gdzie mogę użyć mechanizmu sortowania Solr do sortowania według kategorii wagi i nie trzeba zmieniać schematu za każdym razem, gdy dodaję kategorię.
Dzięki Dheerendra
Powodem jest to produkt ma wiele innych pól będę musiał zapytać o jak ceny, waga, wysyłka za darmo itd. to te pola będą się powtarzać w każdym dokumencie. Generalnie powyższa technika sprawia, że system jest ciężki, gdybym miał produkty 1M w moim systemie i średnio, jeśli produkt może być powiązany z 5 kategoriami, będę miał dokumenty 5M tylko ze względu na zmianę 2 pól, np. Category_id i weight. –
Lucene koduje wartości pól za pomocą tabeli symboli, takich jak magazyn kolumn. Ogólnie rzecz biorąc, powielanie danych nie jest tak problematyczne, jak w przypadku relacyjnej bazy danych. –
Możesz również zajrzeć do funkcji łączenia Solr, aby sprawdzić, czy możesz zrobić prosty Produkt połączony z produktem/kategorią, ale zajmie to trochę więcej pracy. –