SOLR多值字段

3

情境:

我有以下(简化的)数据库表情境:

ID   ProductName          ProductCategory   Colour   Price
----------------------------------------------------------
1    BatmanTShirt         T-Shirt           Black    22
2    BatmanTShirt         T-Shirt           Blue     20
3    SupermanTShirt       T-Shirt           Blue     19
4    SpidermanTrousers    Trousers          Red      28
5    SpidermanTrousers    Trousers          Black    30

我的愿望:

在SOLR索引中,我希望将这些数据以规范化的方式映射,这样只会创建3个SOLR文档(如下所示),而不是5个。

<doc1>
  <ID>1</ID>
  <ProductName>BatmanTShirt</ProductName>
  <ProductCategory>T-Shirt</ProductCategory>
  <OtherDetails>{ {1, Black, 22}, {2, Blue, 20} }</OtherDetails>
</doc1>
<doc2>
  <ID>3</ID>
  <ProductName>SupermanTShirt</ProductName>
  <ProductCategory>T-Shirt</ProductCategory>
  <OtherDetails>{ {3, Blue, 19} }</OtherDetails>
</doc2>
<doc3>
  <ID>4</ID>
  <ProductName>SpidermanTrousers</ProductName>
  <ProductCategory>Trousers</ProductCategory>
  <OtherDetails>{ {4, Red, 28}, {5, black, 30} }</OtherDetails>
</doc3>

一些说明:

  • <ID> 将包含该组中的最小ID。
  • <OtherDetails> 将包含独特的ID以及在分组时被省略的其他细节。这将是一个多值字段,数据类型为列表,其中还有另一个细节列表 {ID、颜色、价格}。

问题:

有人知道这是如何实现的吗?

P.S.

进行这种“分组”操作的原因是我想在产品类别上进行聚合。如果我在产品类别上使用聚合,当前生成的计数将是:

T-Shirt (3)
Trousers (2)

现在我想根据产品类别进行分面,但不包括颜色和价格数据,这样我就只想要两件 T 恤(一件是 Batman 的,一件是 Superman 的)和一条裤子(Spiderman 的)。因此,我想展示的是这个:

T-Shirt (2)
Trousers (1)

我做了一些研究,发现这个功能(称为帖子组分面或矩阵计数)目前正在进行中,如此SOLR补丁中所述。因此,我需要一个暂时的解决方法,因为这可能需要一段时间才能完成。

1个回答

1

这个补丁对于单值字段很有效,因此使用此补丁和分组是最好的选择。

只需像在数据库中一样索引数据,因此您不需要使用多值字段。

您可以使用TortoiseSVN下载最新代码并应用补丁。在Eclipse中构建WAR(或JAR)非常容易。只需使用刚刚下载的代码启动新项目,并在根目录和solr目录中运行build.xml中的ant脚本即可。


1
感谢O. Klein的回答。我已经成功使用ToirtoiseSVN下载了代码。目前我正在使用ANT构建它,但是我想像你提到的那样将其导入Eclipse,你能给我一些关于如何导入和编译它的详细信息吗?谢谢。 - mrd3650

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接