删除非数字字符并转换为Float字段

时间:2012-09-10 02:58:18

标签: solr filter

我正在尝试使用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;过滤列表

有没有办法设置数字字段,以便您可以应用过滤器? 或者我可以创建它以便源字段将数据的剥离版本呈现给复制字段吗?

1 个答案:

答案 0 :(得分:0)

我猜他希望该字段属于TrieFloatField类型,因为它将运行范围查询等,这将比仅仅是文本字段更高效。

所以一种方法是使用update processor,你可以在那里进行清理,并在字段中插入正确的数值。