多条件查询
一、不加时间范围
// 组合:生成查询条件
BooleanClause.Occur[] clauses = { BooleanClause.Occur.MUST,BooleanClause.Occur.MUST, BooleanClause.Occur.MUST };
// 根据地区,类型,还有关键字
String[] querys = { "地区", "类型","关键字" }; // 把搜索条件放到数组里
//相对应的索引
String[] fields = { "area", "indId", "key_name" };
// 接收搜索结果——(长度就是结果的数量)
ScoreDoc[] hits = searcher.search(query, searcher.maxDoc()).scoreDocs;
二、加时间范围
BooleanQuery query = new BooleanQuery();
//条件一
QueryParser parser1 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser1.parse(sex.getExArea()),BooleanClause.Occur.MUST);
//条件二
QueryParser parser2 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser2.parse(sex.getExArea()),BooleanClause.Occur.MUST);
//条件三
QueryParser parser3 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser3.parse(sex.getExArea()),BooleanClause.Occur.SHOULD);
//加入时间范围
RangeQuery q = new RangeQuery(new Term("ex_start", String
.valueOf(sex.getExStart())), new Term("ex_end", String
.valueOf(sex.getExEnd())), true);
query.add(q,BooleanClause.Occur.SHOULD);
生成检索器
IndexSearcher searcher = new IndexSearcher(FSDirectory
.getDirectory(new File("c:\\index")));
接收搜索结果——(长度就是结果的数量)
ScoreDoc[] hits = searcher.search(query, searcher.maxDoc()).scoreDocs;