在mysql中,我有一列ids varchar(255)
,它是逗号分隔的int值。 例如1,3,5,7
。Solr - 匹配逗号分隔的ID
当通过Solr
搜索,用户将提供一个单一的id
,e.g 3
,那么它应该是能够找到的行,其ids
列包含值3
。
的问题是:
我应该如何导入通过DIH数据,并在Solr的定义字段?谢谢。
在mysql中,我有一列ids varchar(255)
,它是逗号分隔的int值。 例如1,3,5,7
。Solr - 匹配逗号分隔的ID
当通过Solr
搜索,用户将提供一个单一的id
,e.g 3
,那么它应该是能够找到的行,其ids
列包含值3
。
的问题是:
我应该如何导入通过DIH数据,并在Solr的定义字段?谢谢。
在您的数据import.xml(如果你把它命名为这样),你可以使用the built-in RegexTransformer
<entity name="foo" transformer="RegexTransformer" query="select list_of_ids from foo"/>
<field column="splittedIDs" splitBy="," sourceColName="list_of_ids"/>
</entity>
正如你所看到的,你需要
transformer="RegexTransformer"
for the entitysplitBy=","
for the question在您的schema.xml中,根据字段需要是multivalued="true"
。人们往往会忘记这一点,并问为什么要存储第一个/最后一个值。
正如您所指定的数据是用逗号分隔的数字序列。您可以使用以下FieldType配置。
<fieldType name="comma_numbers" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
</fieldType>
如果其他数据containes然后是数字,那么你可能需要调整WordDelimiterFilterFactory
过滤器的配置。
经过考虑,我最好将ID存储在一张额外的表中。我问了另一个问题,你能否看看,thx。链接:http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –
经过考虑,我最好把ID存储在一张额外的表格中。我问了另一个问题,你能否看看,thx。链接:http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –