您当前的位置: 首页 >  ar

10 Lucene索引库查询 - queryparser查询

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

通过QueryParser也可以创建Query,QueryParser提供一个Parse方法,此方法可以直接根据查询语法来查询。Query对象执行的查询语法可通过System.out.println(query);查询。

需要使用到分析器。建议创建索引时使用的分析器和查询索引时使用的分析器要一致。

QueryParser

需要加入queryParser依赖的jar包。 在这里插入图片描述

1.程序实现
@Test
public void testQueryParser() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//创建queryparser对象
	//第一个参数默认搜索的域
	//第二个参数就是分析器对象
	QueryParser queryParser = new QueryParser("content", new IKAnalyzer());
	Query query = queryParser.parse("Lucene是java开发的");
	//执行查询
	printResult(query, indexSearcher);
}
2.查询语法

1、基础的查询语法,关键词查询: 域名+“:”+搜索的关键字 例如:content:java

2、范围查询 域名+“:”+[最小值 TO 最大值] 例如:size:[1 TO 1000] 范围查询在lucene中不支持数值类型,支持字符串类型。在solr中支持数值类型。

3、组合条件查询

  • 1)+条件1 +条件2:两个条件之间是并且的关系and 例如:+filename:apache +content:apache

  • 2)+条件1 条件2:必须满足第一个条件,应该满足第二个条件 例如:+filename:apache content:apache

  • 3)条件1 条件2:两个条件满足其一即可。 例如:filename:apache content:apache

  • 4)-条件1 条件2:必须不满足条件1,要满足条件2 例如:-filename:apache content:apache 在这里插入图片描述

第二种写法: 条件1 AND 条件2 条件1 OR 条件2 条件1 NOT 条件2

MulitFieldQueryParser

可以指定多个默认搜索域

@Test
public void testMultiFiledQueryParser() throws Exception {
	IndexSearcher indexSearcher = getIndexSearcher();
	//可以指定默认搜索的域是多个
	String[] fields = {"filename", "content"};
	//创建一个MulitFiledQueryParser对象
	MultiFieldQueryParser queryParser = new MultiFieldQueryParser(fields, new IKAnalyzer());
	Query query = queryParser.parse("java and apache");
	System.out.println(query);
	//执行查询
	printResult(query, indexSearcher);
	
}
关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 2浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

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

微信扫码登录

0.1037s