【问题标题】:Apache SOLR and string range searchApache SOLR 和字符串范围搜索
【发布时间】:2014-04-05 23:18:24
【问题描述】:

是否可以按字段类型“字符串”的范围进行搜索?

fieldString:[A TO B]

fieldString:[U-00* TO U-009]

表示给出所有字符序列在 A 到 B 之间的字段的结果或 U-009之间的所有U-000

现在我得到了一些字段,其值从 U-001、U-002... 到 U-009

I try: fieldString:[U-00* TO U-009] but this dont work
fieldString:/U-00[0-9]/ and also the same non results

【问题讨论】:

    标签: java string search solr lucene


    【解决方案1】:

    是的,这是可能的。但结果可能取决于您如何分析索引中的字符串。如果字符串只是A或B,没有问题;但在某些标记化时,您可能会得到所有包含 A 或 B 的结果。

    schema.xml:
    <types>
        <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" />
        ...
    </types>
    
    <fields>
        ...
        <field name="isbn" type="string" indexed="true" stored="true" multiValued="false" />
        ...
    </fields>
    
    solrconfig.xml:
    <requestHandler class="solr.SearchHandler" name="standard">
    </requestHandler>
    

    如您所见,没有什么特别的。字符串类型不被任何过滤器处理,而是按原样存储。我使用标准查询解析器。在此配置中,您的示例有效

    【讨论】:

    • 我如何检查这个?
    • 查看 schema.xml 中相关字段的 fieldType。定义了分析器(标记器、过滤器)。可能出于您的考虑,您将希望使用纯字符串。
    • 我刚刚检查并得到了这个字段的分析器:分析器>
    • 标准分词器在空格上拆分,而小写过滤器则可以,正如它的名字所说...如果范围搜索适用于您的情况,您是否尝试过?有什么问题吗,还是只是理论上的询问?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多