如何使lucene不区分大小写

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

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

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

StandardAnalyzer应用LowerCaseFilter ,使“Word”和“word”相同。 您可以简单地将其传递给您使用IndexWriterQueryParser 。 例如几行代码:

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

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

             

使用http://lucene.apache.org/java/2_4_1/api/org/apache/lucene/analysis/LowerCaseFilter.html 。

除了使用包含LowerCaseFilterStandardAnalyzer和常用英语单词的filter(例如“the”)之外,还应确保使用TextField构建文档,而不是StringField用于精确搜索。