【问题标题】:Lucene: I would like to do a search on the index which I have built using Lucene but while searching I would like to ignore caseLucene:我想对使用 Lucene 构建的索引进行搜索,但在搜索时我想忽略大小写
【发布时间】:2011-10-12 05:06:53
【问题描述】:

Lucene:我想对使用 Lucene 构建的索引进行搜索,但在搜索时我想忽略搜索条件的大小写,我该怎么做? 例如,我的索引(lucene)中有 http 或 HTTP,所以当我使用 http 搜索时,我应该得到两个结果。

【问题讨论】:

    标签: lucene


    【解决方案1】:

    这取决于几件事。首先,如果您用来索引的分析器尚未将文本标记为小写,您会发现这样做非常困难。

    我相信KeywordAnalyzer 保留大小写。因此,“Hello”一词将在索引中保留为“Hello”作为术语,这意味着您可以找到该词的唯一方法是使用完全相同的大小写。

    但是,StandardAnalyzer 会将所有术语转换为小写。因此,“Hello”在术语列表中将是“hello”,但如果您还要存储文本,而不仅仅是分析它,如果您要从索引中检索它,它将保留字符串的大小写。但是,搜索“Hello”、“heLLO”、“HeLlO”都与“hello”相同,因为它会将所有这些都转换为小写。

    您也不必拘泥于这些分析器,您可以随时创建自己的。

    最后,强烈建议您在搜索时使用与创建索引相同的分析器。

    【讨论】:

      【解决方案2】:

      应将 LowerCaseFilter 添加到分析过滤器链中。
      使用 Lucene 的 LowerCaseFilter,可以在索引和搜索之前将标记小写,以使搜索不区分大小写。
      建议在索引和搜索期间完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多