我有一个关于 SOLR 的特定查询,我似乎找不到解决方案。我有一个充满产品和 sku 的索引。一个产品有多个 sku,每个 sku 有 1 个产品。我只想对我的 SKU 执行搜索,按父产品分组并仅返回父产品的详细信息(但不是项目的详细信息)。但是,我希望这些方面代表原始项目列表。今天的 SOLR 可以做到这一点吗?什么版本可用?
问问题
722 次
2 回答
0
我认为有可能,我的建议是设计你的核心,使文档只代表一个 SKU,或一个项目。因此,您的唯一 ID 将是 SKU ID。然后,您需要一个不唯一的 productId,并且对于具有相同父产品的 SKU 可能具有相同的值。
您还可以对所有文档中的产品详细信息进行非规范化处理。因此,当您退回商品的详细信息时,您还拥有产品的详细信息。
查询的技巧是在 Solr 中使用分组或字段折叠功能。在此处查看更多详细信息:https ://wiki.apache.org/solr/FieldCollapsing
但作为开始,我建议在查询中设置这些值:
- 设置
group=true
(这将启用分组) - 设置
group.field=productId
(按 productId 分组或折叠项目) - 设置
group.facet=false
(包括构面计数中所有项目的详细信息)
因此,这将使您能够搜索所有项目,返回按 ProductId 分组的结果,并且构面编号将应用于所有项目。这不是一个新功能,如果您有任何 Solr 3.3 或 4.x,您应该能够使用分组。
于 2014-04-29T02:16:16.410 回答
0
你可以使用:
"sort":"map(special_price,1,99999,special_price,price) desc" "sort":"map(special_price,1,99999,special_price,price) asc"
于 2015-08-19T11:25:56.547 回答