Solr汇总查询

时间:2014-04-28 17:29:19

标签: solr lucene facet rollup

我有一个SOLR的特定查询,我似乎无法找到解决方案。我有一个完整的产品索引和sku's。产品有多个sku,每个sku有1个产品。我希望仅针对我的SKU进行搜索,按父产品进行分组,只返回父产品的详细信息(但不返回项目的详细信息)。但是,我希望构面代表原始列表的项目。今天SOLR可以实现吗?这是什么版本?

2 个答案:

答案 0 :(得分: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(包括构面计数中所有项目的详细信息)
  4. 因此,这将使您能够搜索所有项目,返回按ProductId分组的结果,并且构面编号将应用于所有项目。 这不是一个新功能,如果您有任何Solr 3.3或4.x,您应该能够使用分组。

答案 1 :(得分:0)

您可以使用:

"排序":"地图(special_price,1,99999,special_price,price)desc" "排序":"地图(special_price,1,99999,special_price,price)asc"