0

我有一个关于 SOLR 的特定查询,我似乎找不到解决方案。我有一个充满产品和 sku 的索引。一个产品有多个 sku,每个 sku 有 1 个产品。我只想对我的 SKU 执行搜索,按父产品分组并仅返回父产品的详细信息(但不是项目的详细信息)。但是,我希望这些方面代表原始项目列表。今天的 SOLR 可以做到这一点吗?什么版本可用?

4

2 回答 2

0

我认为有可能,我的建议是设计你的核心,使文档只代表一个 SKU,或一个项目。因此,您的唯一 ID 将是 SKU ID。然后,您需要一个不唯一的 productId,并且对于具有相同父产品的 SKU 可能具有相同的值。

您还可以对所有文档中的产品详细信息进行非规范化处理。因此,当您退回商品的详细信息时,您还拥有产品的详细信息。

查询的技巧是在 Solr 中使用分组或字段折叠功能。在此处查看更多详细信息:https ://wiki.apache.org/solr/FieldCollapsing

但作为开始,我建议在查询中设置这些值:

  1. 设置group=true (这将启用分组)
  2. 设置group.field=productId (按 productId 分组或折叠项目)
  3. 设置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 回答