在Solr中存储类别信息

时间:2015-10-20 09:39:13

标签: solr schema product categories solr5

我的产品信息存储在我的solr数据库中。产品可以是多个类别的一部分。

现在,我想在属于这些类别的产品中存储有关这些类别的信息。 (还有其他方法吗?)

因此,假设产品A属于类别C1和C2,其中包含ID I1和I2。现在我如何在产品A中存储I1到C1的映射?这样做的架构应该是什么?

但是,如果只是存储一个id,名称和一些其他数据(比如url)的列表,那么每个id到name或url的映射将会丢失。像这样:

<field name="category_ids" type="tints" indexed="true" stored="true"/>
<field name="category_names" type="strings" indexed="true" stored="true"/>

那么我应该如何存储文件?

1 个答案:

答案 0 :(得分:1)

您描述的方式有效 - Solr会保持字段之间的序列相同,因此您可以假设字段category_ids中的第一个值对应于字段category_names中的第一个值。我们使用它来索引多个多值字段中更复杂的对象。

第二种解决方案是使用类别ID在中间件中查找实际的类别信息,查询数据库中的相关信息。如果名称发生更改,这将避免重新索引类别的所有文档(除非您使用查询名称,这将要求您无论选择何种解决方案都要进行重新索引)。

第三个解决方案是让一个字段同时包含id,name以序列化形式的名称,例如3;Laptops或JSON,并且只存储字段而不对其进行索引(并使用索引,非用于实际搜索的存储字段。)

您也可以将子文档用于此类内容,但我个人认为它会给您带来相当多的不必要的复杂性。

相关问题