我的产品信息存储在我的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"/>
那么我应该如何存储文件?
答案 0 :(得分:1)
您描述的方式有效 - Solr会保持字段之间的序列相同,因此您可以假设字段category_ids
中的第一个值对应于字段category_names
中的第一个值。我们使用它来索引多个多值字段中更复杂的对象。
第二种解决方案是使用类别ID在中间件中查找实际的类别信息,查询数据库中的相关信息。如果名称发生更改,这将避免重新索引类别的所有文档(除非您使用查询名称,这将要求您无论选择何种解决方案都要进行重新索引)。
第三个解决方案是让一个字段同时包含id,name以序列化形式的名称,例如3;Laptops
或JSON,并且只存储字段而不对其进行索引(并使用索引,非用于实际搜索的存储字段。)
您也可以将子文档用于此类内容,但我个人认为它会给您带来相当多的不必要的复杂性。