我正在尝试使用copyField命令来获取包含数值的文本字段,但在数字字段中有一些相关的文本可以进行范围过滤。
例如。正常值1.3或200 脏值200cc或1,500
是否可以设置一个Float字段类型,使用过滤器去除非数字字符?
如果我这样定义,过滤器似乎没有处理
<fieldType name="floatNoText" class="solr.TrieFloatField" >
<filter class="solr.PatternReplaceFilterFactory" pattern="[^0-9.]" replacement="" replace="all"/>
</fieldType>
如果我用分析仪定义它:
<fieldType name="floatNoText" class="solr.TrieFloatField" >
<analyzer>
<filter class="solr.PatternReplaceFilterFactory" pattern="[^0-9.]" replacement="" replace="all"/>
</analyzer>
</fieldType>
我收到以下错误:
SEVERE:org.apache.solr.common.SolrException:没有类或标记器的分析器&amp;过滤列表
有没有办法设置数字字段,以便您可以应用过滤器? 或者我可以创建它以便源字段将数据的剥离版本呈现给复制字段吗?
答案 0 :(得分:0)
我猜他希望该字段属于TrieFloatField类型,因为它将运行范围查询等,这将比仅仅是文本字段更高效。
所以一种方法是使用update processor,你可以在那里进行清理,并在字段中插入正确的数值。