官方文档:https://lucene.apache.org/core/7_1_0/core/org/apache/lucene/search/package-summary.html#search
1.通过QueryParser构造查询单条件条件
2.通过构造单条件TermQuery
3.通过构造多条件查询MultiFieldQueryParser
4.BooleanQuery 构建多条件查询
6.MultiPhraseQuery 是PhraseQuery 的子类,作用相似
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:无意义,检索无结果。
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:无意义,检索无结果。