apache lucene7.0几种常用的查询条件构造方式

官方文档:https://lucene.apache.org/core/7_1_0/core/org/apache/lucene/search/package-summary.html#search

1.通过QueryParser构造查询单条件条件
		QueryParser queryParser = new QueryParser("courseName", analyzer);
		Query query = queryParser.parse("语文的3年级");




2.通过构造单条件TermQuery
		Query query = new TermQuery(new Term("courseName", "小学"));




3.通过构造多条件查询MultiFieldQueryParser
		String[] queries= {"古诗","古诗二首"};
		String[] fields = { "courseName", "title" }; 
		Query query = MultiFieldQueryParser.parse(queries, fields, analyzer);






4.BooleanQuery 构建多条件查询
		Query query1 = new TermQuery(new Term("title", "语文"));
		Query query2 = new TermQuery(new Term("courseName", "3年级"));
		BooleanClause bc1 = new BooleanClause(query1, BooleanClause.Occur.MUST);
		BooleanClause bc2 = new BooleanClause(query2, BooleanClause.Occur.MUST_NOT);
		Query query = new BooleanQuery.Builder().add(bc1).add(bc2).build();


5.PhraseQuery 个人感觉主要对英语(类似英语单词之间有空格分开的语言)  有作用,对于中文可能作用不大

 		PhraseQuery.Builder builder = new PhraseQuery.Builder();
		//表示组成一个 "hello XXXX word" 的短语区匹配
		 builder.add(new Term("courseName", "hello"),0);
		 builder.add(new Term("courseName", "word"),2);
		 //假如有一个document "hellow,I zhengzhen  word."
		 //表示hellow向右(也可能向右)移动1次以后 "hellow zhengzhen word" 刚好匹配"hello XXXX word"
		 builder.setSlop(1);
		 Query query = builder.build();

6.MultiPhraseQuery  是PhraseQuery 的子类,作用相似

		 MultiPhraseQuery.Builder b=new MultiPhraseQuery.Builder();
		 b.add(new Term("title","Unit")).add(new Term("title","1"));
		 b.setSlop(2);
		 Query query =b.build();


7.通配符查询WildcardQuery

		//使用通配符查询,*代表0个或多个字母,?代表0个或1个字母。
		Query query=new WildcardQuery(new Term("title","Unit*"));


8.PointRangeQuery数字范围查询


1.MUST和MUST:取得连个查询子句的交集。 
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 
3.SHOULD与MUST_NOT:连用时,功能同MUST和MUST_NOT。
4.SHOULD与MUST连用时,结果为MUST子句的检索结果,但是SHOULD可影响排序。
5.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。
6.MUST_NOT和MUST_NOT:无意义,检索无结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值