【问题标题】:how to make lucene be case-insensitive如何使lucene不区分大小写
【发布时间】:2018-09-29 08:11:58
【问题描述】:

默认情况下,单词“Word”和“word”不一样。如何让 Lucene 不区分大小写?

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    最简单的方法是将所有可搜索的内容和查询都小写。请参阅LowerCaseFilter 文档。您还可以使用Wildcard 查询进行不区分大小写的搜索,因为它绕过了Analyzer

    如果愿意,您可以将内容存储在不同的字段中以捕获不同的案例配置。

    【讨论】:

    • 一两行示例源代码可以让你的答案完整
    【解决方案2】:

    StandardAnalyzer 应用了LowerCaseFilter,这将使“Word”和“word”相同。您可以简单地将其传递给您对IndexWriterQueryParser 的使用。例如。几行sn-ps:

    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
    IndexWriter writer = new IndexWriter(dir, analyzer, true, mlf);
    QueryParser parser = new QueryParser(Version.LUCENE_30, field, analyzer);
    

    【讨论】:

      【解决方案3】:

      除了使用StandardAnalyzer(包括LowerCaseFilter 和常用英文单词(例如“the”)过滤器)之外,您还应该确保使用TextFields 构建文档,而不是StringField用于精确搜索。

      【讨论】:

        【解决方案4】:

        将 LowerCaseFilterFactory 添加到 Schema.xml 中该字段的 fieldType。例如,

        <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
                    <analyzer type="index">
                        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
                        <filter class="solr.LowerCaseFilterFactory"/>
                    </analyzer>
        
                    <analyzer type="query">
                        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
                        <filter class="solr.LowerCaseFilterFactory"/>
                    </analyzer>
                </fieldType>
        

        【讨论】:

        • 很好的答案,但问题是关于 Lucene,它没有 Solr 那样的架构
        猜你喜欢
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 2011-08-28
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 2011-10-14
        相关资源
        最近更新 更多