我对Lucene比较陌生,并且自己尝试了几个例子。我注意到的一件事是TermQuery
似乎寻找完全匹配(区分大小写),而如果我构造BooleanQuery
具有相同的TermQuery
,它会执行不区分大小写的搜索。更具体地说,如果我只是搜索:
new TermQuery(new Term("content", "sample_word"));
它不会将Sample_word
(大写字母S)的文档视为匹配项。但是,如果我搜索以下内容:
Query booleanQuery = new BooleanQuery();
booleanQuery.add(new TermQuery(new Term("content", "sample_word")), Occur.MUST);
它确实认为它是一个匹配。为什么会这样?
我的猜测是,使用TermQuery
时,没有默认的分析器可以启动,但是有BooleanQuery
?是否有任何方法可以强制某些分析器与TermQuery
一起使用?