在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 –