0

我们正在使用 SOLR 为电子商务应用程序索引产品,我们有按类别和子类别分组的产品,并且同一产品可以出现在多个子类别中,我们需要检索它所属并希望使用的所有子类别中的产品一个单一的查询来实现这一目标。任何指针都会非常有帮助。下图示例 -

假设产品 p1 属于子类别 sc1,而 sc2 属于父类别 c1

c1 ----- sc1 ----- p1

c1 ----- sc2 ----- p1

我们对产品进行索引的方式是在产品 p1 中有类别路径信息,p1 - (c1->sc1 and c1->sc2) 的类别路径

当用户浏览类别 c1 时,产品应在按子类别 sc1 和 sc2 分组的页面上出现两次,如下所示

c1 ----- sc1

          p1

----- sc2
          p1

我们想从 solr 查询,以便它返回分组在 2 个不同子类别中的相同产品,从而有效地复制结果。我们可以在从 solr 获取结果后以编程方式执行此操作,但我们有分页和排序逻辑,这很难在代码中维护。

4

2 回答 2

1

这就像标签。您知道,当您标记事物时,单个项目可以有多个标记。在 SOLR 中,您可以将其表示为一个多值字段,即一个值数组。

您需要将“子类别”变成多值字段。我认为您对路径的引用意味着在多个不相关的类别中使用了相同的子类别标识符,因此您将类别和子类别组合在一起以获得唯一键。

在这种情况下,您可能有:

p1, [c1>sc1]
p2, [c1>sc2,c1>sc7]
p3, [c1>sc5]
p4, [c1>sc1,c1>sc5]

当您检索具有匹配 c1 的子类别的所有产品时

于 2012-02-23T14:43:08.430 回答
0

为了实际多次返回产品,您需要在 Solr 索引中为该产品提供多条记录。但是,我怀疑这会使更新单个产品记录变得有些困难——假设您使用的是唯一密钥,那么您将需要一个基于产品 ID 和子类别的密钥。

我同意 Michael Dillon 的建议,即将“子类别”设为多值字段,然后适当地格式化结果。

于 2012-02-27T18:08:17.843 回答