如何使lucene不区分大小写
默认情况下,单词“Word”和“单词”不一样。 如何让Lucene不区分大小写?
最简单的方法是降低所有可搜索内容以及查询。 请参阅LowerCaseFilter
文档。 您也可以使用Wildcard
查询进行不区分大小写的搜索,因为它绕过了Analyzer
。
如果愿意,您可以将内容存储在不同的字段中以捕获不同的案例配置
StandardAnalyzer
应用LowerCaseFilter
,使“Word”和“word”相同。 您可以简单地将其传递给您使用IndexWriter
和QueryParser
。 例如几行代码:
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 。
除了使用包含LowerCaseFilter
的StandardAnalyzer
和常用英语单词的filter(例如“the”)之外,还应确保使用TextField
构建文档,而不是StringField
用于精确搜索。