Lucence内建的Query对象lucene

来源:互联网 发布:linux脚本创建 编辑:程序博客网 时间:2024/05/21 14:42

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);

原创粉丝点击