Lucene 单域多条件查询

在Lucene 中 BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表示not,BooleanClause.Occur.SHOULD表示or。

 

 

下面给出个例子

 

 

 

  1. **  
  2. * 根据信息分类和关键词进行查询  
  3. * @param type,资源的类型,其值为news或product  
  4. * @param searchKey,搜索的关键字  
  5. * @return Hits  
  6. */  
  7. public Hits executeSearch(String keyword)   
  8. {   
  9.   Hits result = null;   
  10.   if(keyword != null && !keyword.equals(""))   
  11.   {   
  12.     try    
  13.     {   
  14.       //根据关键字构造一个数组   
  15.       String[] key = new String[]{keyword,type};   
  16.       //同时声明一个与之对应的字段数组   
  17.       String[] fields = {"title"};   
  18.       //声明BooleanClause.Occur[]数组,它表示多个条件之间的关系   
  19.       BooleanClause.Occur[] flags=new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};   
  20.       ChineseAnalyzer analyzer = new ChineseAnalyzer();   
  21.       //用MultiFieldQueryParser得到query对象   
  22.       Query query = MultiFieldQueryParser.parse(key, fields, flags, analyzer);   
  23.       //c:/index表示我们的索引文件所在的目录   
  24.       IndexSearcher searcher = new IndexSearcher("c:/index");   
  25.       //查询结果   
  26.       result = searcher.search(query);   
  27.     } catch (Exception e)   
  28.     {   
  29.       e.printStackTrace();   
  30.     }   
  31.   }   
  32.   return result;   
  33. }  

  多条件索引关系

BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST,

BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。有以下6种组合: 
1.MUST和MUST:取得连个查询子句的交集。 
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 
3.MUST_NOT和MUST_NOT:无意义,检索无结果。 
4.SHOULD与MUST、SHOULD与MUST_NOT:SHOULD与MUST连用时,无意义,结果为MUST子句的检索

结果。与MUST_NOT连用时,功能同MUST。 
5.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。

转载于:https://www.cnblogs.com/dingjiaoyang/p/6115358.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值