前面是用list集合和交集方法来实现Lucene的多查询功能,具体可以查看之前的博客:http://blog.youkuaiyun.com/qq_26641781/article/details/76912310,现在换成调用Lucene API的函数实现多查询的功能,还是上代码吧:
//文件名检索传递
Term term = new Term("name", queryTitle);
Query query1 = new TermQuery(term);
//文件内容检索传递
parser = new QueryParser("body", analyzer);
Query query2 = parser.parse(queryBody);
BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();
/*
* 查询条件
* 可满足同时单独查标题,查内容或同时查标题和内容
* */
if(("").equals(queryTitle)||queryTitle == null){
booleanQuery.add(query2, Occur.MUST);
}else if(("").equals(queryBody)||queryBody == null){
booleanQuery.add(query1, Occur.MUST);
}else{
booleanQuery.add(query1, Occur.MUST);
booleanQuery.add(query2, Occur.MUST);
}
TopDocs results = null;
results = searcher.search(booleanQuery.build(), 100, sort);
for (ScoreDoc sd : results.scoreDocs) {
Document doc = searcher.doc(sd.doc);
lists.add(searchPutListMap(doc));
}