2015-08-28 76 views
0

在mysql中,我有一列ids varchar(255),它是逗号分隔的int值。 例如1,3,5,7Solr - 匹配逗号分隔的ID

当通过Solr搜索,用户将提供一个单一的id,e.g 3,那么它应该是能够找到的行,其ids列包含值3

的问题是:

我应该如何导入通过DIH数据,并在Solr的定义字段?谢谢。

回答

2

在您的数据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> 

正如你所看到的,你需要

  • add transformer="RegexTransformer" for the entity
  • add splitBy="," for the question

在您的schema.xml中,根据字段需要是multivalued="true"。人们往往会忘记这一点,并问为什么要存储第一个/最后一个值。

+0

经过考虑,我最好把ID存储在一张额外的表格中。我问了另一个问题,你能否看看,thx。链接:http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –

2

正如您所指定的数据是用逗号分隔的数字序列。您可以使用以下FieldType配置。

<fieldType name="comma_numbers" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" /> 
    </analyzer> 
</fieldType> 

如果其他数据containes然后是数字,那么你可能需要调整WordDelimiterFilterFactory过滤器的配置。

Analysis of the data and fieldType

+0

经过考虑,我最好将ID存储在一张额外的表中。我问了另一个问题,你能否看看,thx。链接:http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –