您当前的位置: 首页 > 

09 Lucene索引库查询 - query子类查询

杨林伟 发布时间:2019-05-10 11:04:50 ,浏览量:2

MatchAllDocsQuery

使用MatchAllDocsQuery查询索引目录中的所有文档

@Test
public void testMatchAllDocsQuery() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//创建查询条件
	Query query = new MatchAllDocsQuery();
	//执行查询
	printResult(query, indexSearcher);
}
TermQuery

TermQuery,通过项查询,TermQuery不使用分析器所以建议匹配不分词的Field域查询,比如订单号、分类ID号等。 指定要查询的域和要查询的关键词。

//使用Termquery查询
@Test
public void testTermQuery() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//创建查询对象
	Query query = new TermQuery(new Term("content", "lucene"));
	//执行查询
	TopDocs topDocs = indexSearcher.search(query, 10);
	//共查询到的document个数
	System.out.println("查询结果总数量:" + topDocs.totalHits);
	//遍历查询结果
	for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
		Document document = indexSearcher.doc(scoreDoc.doc);
		System.out.println(document.get("filename"));
		//System.out.println(document.get("content"));
		System.out.println(document.get("path"));
		System.out.println(document.get("size"));
	}
	//关闭indexreader
	indexSearcher.getIndexReader().close();
}
NumericRangeQuery

可以根据数值范围查询。

//数值范围查询
@Test
public void testNumericRangeQuery() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//创建查询
	//参数:
	//1.域名
	//2.最小值
	//3.最大值
	//4.是否包含最小值
	//5.是否包含最大值
	Query query = NumericRangeQuery.newLongRange("size", 1l, 1000l, true, true);
	//执行查询
	printResult(query, indexSearcher);
}
BooleanQuery

可以组合查询条件。

//组合条件查询
@Test
public void testBooleanQuery() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//创建一个布尔查询对象
	BooleanQuery query = new BooleanQuery();
	//创建第一个查询条件
	Query query1 = new TermQuery(new Term("filename", "apache"));
	Query query2 = new TermQuery(new Term("content", "apache"));
	//组合查询条件
	query.add(query1, Occur.MUST);
	query.add(query2, Occur.MUST);
	//执行查询
	printResult(query, indexSearcher);
}

Occur.MUST: 必须满足此条件,相当于and Occur.SHOULD: 应该满足,但是不满足也可以,相当于or Occur.MUST_NOT: 必须不满足。相当于not

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 2浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1327s