【发布时间】:2011-10-12 05:06:53
【问题描述】:
Lucene:我想对使用 Lucene 构建的索引进行搜索,但在搜索时我想忽略搜索条件的大小写,我该怎么做? 例如,我的索引(lucene)中有 http 或 HTTP,所以当我使用 http 搜索时,我应该得到两个结果。
【问题讨论】:
标签: lucene
Lucene:我想对使用 Lucene 构建的索引进行搜索,但在搜索时我想忽略搜索条件的大小写,我该怎么做? 例如,我的索引(lucene)中有 http 或 HTTP,所以当我使用 http 搜索时,我应该得到两个结果。
【问题讨论】:
标签: lucene
这取决于几件事。首先,如果您用来索引的分析器尚未将文本标记为小写,您会发现这样做非常困难。
我相信KeywordAnalyzer 保留大小写。因此,“Hello”一词将在索引中保留为“Hello”作为术语,这意味着您可以找到该词的唯一方法是使用完全相同的大小写。
但是,StandardAnalyzer 会将所有术语转换为小写。因此,“Hello”在术语列表中将是“hello”,但如果您还要存储文本,而不仅仅是分析它,如果您要从索引中检索它,它将保留字符串的大小写。但是,搜索“Hello”、“heLLO”、“HeLlO”都与“hello”相同,因为它会将所有这些都转换为小写。
您也不必拘泥于这些分析器,您可以随时创建自己的。
最后,强烈建议您在搜索时使用与创建索引相同的分析器。
【讨论】:
应将 LowerCaseFilter 添加到分析过滤器链中。
使用 Lucene 的 LowerCaseFilter,可以在索引和搜索之前将标记小写,以使搜索不区分大小写。
建议在索引和搜索期间完成。
【讨论】: