在 Solr 中存储类别信息

Store category information in Solr

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

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

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

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

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

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

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

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

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

您也可以使用子文档来做类似的事情,但我个人认为这会给您带来很多不必要的复杂性。