我想知道你是否有人可以帮助我在Solr中存储产品属性。我遇到的问题是产品属性因产品类别而异。从我到目前为止所理解的,我必须列出我的架构中的字段。属性的数量相当大且不断变化 - 你们有什么建议?
例如,衬衫类别中的产品可能具有尺寸属性,但不动产类别中的产品可能具有卧室属性。
(我目前正计划不断将MySQL数据导入Solr并主要使用Solr进行分面搜索)
答案 0 :(得分:8)
您可以在solr中设置 dynamic fields 。在schema.xml中,在<fields>
块中,您可以配置动态字段定义,如下所示:
<fields>
...
<dynamicField name="*_t" type="text" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_sa" type="string" indexed="true" stored="true" multiValued="true" />
<dynamicField name="*_d" type="date" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_f" type="sfloat" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_i" type="sint" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_ia" type="sint" indexed="true" stored="true" multiValued="true" />
</fields>
您想要的特定设置可能会有所不同,但这是基本想法。
考虑上面的第一个dynamicField
定义。它的含义是你可以动态添加任何以_t
结尾的字段,这些字段将被视为文本字段,将被索引和存储,并将被视为单个值(而不是数组)。
您可以根据需要设置任意数量的动态字段名称,并且您使用的名称没有任何重要性或约定。只需为您可能拥有的每种数据类型设置一个dynamicField
定义。
然后就是这样。无需定义特定字段,只需使用您设置的后缀即可。因此,例如,如果您使用上面的字段,则可以使用以下内容进行插入:
category_s = 'realty'
bedrooms_i = 4
或者你可以用:
进行插入category_s = 'shirts'
size_s = 'M'