我正在使用Solr 3.5.0.我从JDBC数据源导入并有一个分隔字段,我想分成单个值.我正在使用RegexTransformer但是我的领域没有分裂.
Bob,Carol,Ted,Alice
Run Code Online (Sandbox Code Playgroud)
<dataConfig>
<dataSource driver="..." />
<document>
<entity name="ent"
query="SELECT id,names FROM blah"
transformer="RegexTransformer">
<field column="id" />
<field column="names" splitBy="," />
</entity>
</document>
</dataConfig>
Run Code Online (Sandbox Code Playgroud)
<schema name="mytest" version="1.0">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true"
omitNorms="true"/>
<fieldType name="integer" class="solr.IntField" omitNorms="true"/>
</types>
<fields>
<field name="id" type="integer" indexed="false" stored="true"
multiValued="false" required="true" />
<field name="name" type="string" indexed="true" stored="true"
multiValued="true" required="true" />
</fields>
</schema>
Run Code Online (Sandbox Code Playgroud)
当我搜索:我得到一个doc像这样的结果元素:
<doc>
<int name="id">22</int>
<arr name="names">
<str>Bob,Carol,Ted,Alice</str>
</arr>
</doc>
Run Code Online (Sandbox Code Playgroud)
我本来希望得到这个:
<doc>
<int name="id">22</int>
<arr name="names">
<str>Bob</str>
<str>Carol</str>
<str>Ted</str>
<str>Alice</str>
</arr>
</doc>
Run Code Online (Sandbox Code Playgroud)
我很可能误解RegexTransformer了维基的部分.我已经尝试更改我的分隔符,我尝试使用不同的字段表示部件(如wiki中所示)...
<field column="name" splitBy="," sourceColName="names" />
Run Code Online (Sandbox Code Playgroud)
......但这导致了空name场.我究竟做错了什么?
dhy*_*ong 14
我通过在模式文件中创建字段类型来处理类似的问题:
<fieldType name="commaDelimited" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern=",\s*" />
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
然后我将该类型应用于数据字段的字段,如:
<field name="features" type="commaDelimited" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10542 次 |
| 最近记录: |