0

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

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

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

但是,如果简单地存储 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"/>

那么我应该如何存储文档呢?

4

1 回答 1

1

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

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

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

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

于 2015-10-20T18:34:19.930 回答