3

我想知道你们中是否有人可以帮助我在 Solr 中存储产品属性。我遇到的问题是产品属性因产品类别而异。从我目前所了解的情况来看,我必须列出我的架构中的字段。属性的数量相当大并且不断变化 - 你们有什么建议?

例如,衬衫类别中的产品可能具有尺寸属性,但房地产类别中的产品可能具有卧室属性。

(我目前正计划不断将 MySQL 数据导入 Solr 并主要使用 Solr 进行分面搜索)

4

1 回答 1

8

您可以在 solr中设置动态字段。在 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'
于 2011-01-18T22:42:35.373 回答