2015-08-28 83 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 –