Lucence内建的Query对象lucene

本文详细介绍了Lucene搜索引擎中的多种查询技术,包括TermQuery词条搜索、BooleanQuery布尔搜索、RangeQuery范围搜索、PrefixQuery前缀搜索、PhraseQuery短语搜索、MultiPhraseQuery多短语搜索、FuzzyQuery模糊搜索及WildcardQuery通配符搜索等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值