Lucence内建的Query对象lucene
1.TermQuery 词条搜索
解析:
对某个固定词条的指定,实现搜索索引中存在该词条的文档
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t = new Term("bookname", "钢);
Query query = new TermQuery(t);
System.out.println(query);
Hits hits = searcher.search(query);
2.BooleanQuery 布尔搜索
解析:
lucence各种复杂的查询,最终都表示成Boolean型,用法相当于sql查询语句中条件的 and ,or 作用
BooleanClause.Occur.SHOULD or的关系
BooleanClause.Occur.MUST and 的关系
BooleanClause.Occur.MUST_NOT not的关系
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t = new Term("bookname", "一);
Term t2 = new Term("bookname", "三);
TermQuery q1 = new TermQuery(t);
TermQuery q2 = new TermQuery(t2);
BooleanQuery query = new BooleanQuery();
query.add(q1, BooleanClause.Occur.SHOULD);
query.add(q2, BooleanClause.Occur.SHOULD);
System.out.println(query);
Hits hits = searcher.search(query);
3.RangeQuery范围搜索
解析:
用于查找一定范围内的文档
示例:
Term begin = new Term("bookNumber", "0000004");
Term end = new Term("bookNumber", "0000008");
Query query = new RangeQuery(begin,end,inclusive);
System.out.println(query);
Hits hits = searcher.search(query);
4.PrefixQuery 前缀搜索
解析:
前缀搜索,相当于sql查询的 like 'XX%'
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term prefix = new Term("bookname",searchValue);
PrefixQuery query = new PrefixQuery(prefix);
System.out.println(query);
Hits hits = searcher.search(query);
5.PhraseQuery 短语搜索
解析:
将输入的词条当短语来查找
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
PhraseQuery query = new PhraseQuery();
query.add(new Term("bookname","钢) );
query.add(new Term("bookname","铁));
query.setSlop(2);
System.out.println(query);
//搜索含有钢和铁关键字
Hits hits = searcher.search(query);
6.MultiPhraseQuery 多短语搜索
解析:
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
MultiPhraseQuery query = new MultiPhraseQuery();
Term t =new Term("bookname","钢);
Term t2 = new Term("bookname","和);
query.add(new Term[]{t2,t});
query.add(new Term("bookname","铁));
Term t4 = new Term("bookname","的);
Term t3 = new Term("bookname","战);
query.add(new Term[]{t4,t3});
System.out.println(query);
Hits hits = searcher.search(query);
7.FuzzyQuery 模糊搜索
解析:对单字的模糊查找
示例:
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t =new Term("bookname","钢);
FuzzyQuery query = new FuzzyQuery(t,0.3f,1);
System.out.println(query);
Hits hits = searcher.search(query);
8.WildcardQuery 通配符搜索
解析:
在查询时借助通配符,来匹配
示例:
Term t = new Term("bookname","钢");
WildcardQuery query = new WildcardQuery(t);
System.out.println(query);
Hits hits = searcher.search(query);