Solr将数字视为字符串

时间:2016-03-04 15:32:01

标签: solr

我要求做一个'包含'查询数字字段。是否有任何建议可以做到这一点。例如fq = some_tint_field:* 7 *(开箱即用,这不起作用,返回相当奇怪的结果 - 例如,数字55返回为匹配* 7 *)

我无法从色调中更改字段类型,因为它在范围查询中使用。 到目前为止,我的想法是

  • 有一个字符串字段myField_str,它使用copyfield指令隐藏数字字段,并将其用于搜索。

  • 调查查询函数,并以某种方式有一个自定义查询机制,在运行查询之前将int转换为字符串。

1 个答案:

答案 0 :(得分:0)

我建议定义另一个字段...... 这另一个字段应该是不同的字段类型,它将生成不同的令牌,这将有助于您实现包含搜索。

例如..您可以拥有一个自定义字段类型,它将包含ngram tokenizer。

您可以在schema.xml中添加以下字段类型。 使用" partial_search"您要在其中执行部分搜索的字段的fieldType。

完成schema.xml更改后,您需要重新启动服务器并重新索引数据。

<fieldType name="partial_search" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <tokenizer class="solr.NGramTokenizerFactory" minGramSize="2" maxGramSize="10"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
    </analyzer>
</fieldType>
相关问题