我想解决与基于类别中的产品的排序相关的问题:
我有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 doc看起来像
{
product_id:p1,
category_id:[c1, c2]
}
我现在面临的挑战是我需要支持基于产品类别权重的排序,即c1的列表页面将按顺序包含产品p2,p1,c3的列表将是p3,p2,p1(分数的降序) )
如果我将模式更改为doc看起来像
{
product_id:p1,
category_id:[c1, c2],
c1_weight: 120,
c2_weight: 130
}
这样我每次添加新类别时都需要向模式添加字段cx_weight,以便我可以按cx_weight字段进行排序。
让我知道一个解决方案,我可以使用solr排序机制按类别权重排序,每次添加类别时都不需要更改架构。
由于 Dheerendra
答案 0 :(得分:2)
为什么不尝试将solr doc建模为Product_Category行?
{
product_id:p1,
category_id:c1,
weight:120
},
{
product_id:p1,
category_id:c2,
weight:130
}
这将支持您的类别页面要求。
如果您搜索某些产品属性并且需要跨类别重复删除,则会出现唯一的复杂因素(请参阅field-collapsing doc)