在mysql中,我有一个列impl Option<Option<T>> {
fn flatten(&self) -> Option<T> {
match self {
None => None,
Some(v) => v,
}
}
}
fn main() {
let x = Some(Some(1));
let y = x.flatten();
println!("{:?}", y);
}
,它的逗号分隔了int值。
例如ids varchar(255)
。
通过1,3,5,7
进行搜索时,用户将提供一个Solr
,例如id
,然后它应该能够找到3
列包含值{{1}的行}}
问题是:
如何通过DIH导入数据,并在solr中定义字段? THX。
答案 0 :(得分:2)
如您所指定,您的数据是以逗号分隔的数字序列。您可以使用以下FieldType配置。
<fieldType name="comma_numbers" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
</fieldType>
如果您的数据包含其他数字,那么您可能需要调整配置中的WordDelimiterFilterFactory
过滤器。
答案 1 :(得分:2)
在您的data-import.xml中(如果您这样命名),您可以使用UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
<entity name="foo" transformer="RegexTransformer" query="select list_of_ids from foo"/>
<field column="splittedIDs" splitBy="," sourceColName="list_of_ids"/>
</entity>
如您所见,您需要
transformer="RegexTransformer"
splitBy=","
在schema.xml中,相关字段必须为multivalued="true"
。人们往往会忘记这一点并询问为什么存储第一个/最后一个值。