lucene多条件查询”搜索—BooleanQuery

 

   /**
    * “多条件查询”搜索—BooleanQuery
    * BooleanQuery也是实际开发过程中经常使用的一种Query。
    * 它其实是一个组合的Query,在使用时可以把各种Query对象添加进去并标明它们之间的逻辑关系。
    * 在本节中所讨论的所有查询类型都可以使用BooleanQuery综合起来。
    * BooleanQuery本身来讲是一个布尔子句的容器,它提供了专门的API方法往其中添加子句,
    * 并标明它们之间的关系,以下代码为BooleanQuery提供的用于添加子句的API接口:
    * @throws Exception
    */
   @Test
   public void testBooleanQuery()throws Exception{
      String searchField="contents";
      String q1="xxxxxxxxx";
      String q2="oooooooooooooooo";
      Query query1=new TermQuery(new Term(searchField,q1));
      Query query2=new TermQuery(new Term(searchField,q2));
      BooleanQuery.Builder  builder=new BooleanQuery.Builder();
      //  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:无意义,检索无结果。
      builder.add(query1, BooleanClause.Occur.MUST);
      builder.add(query2, BooleanClause.Occur.MUST);
      BooleanQuery  booleanQuery=builder.build();
      TopDocs hits=is.search(booleanQuery, 10);
      System.out.println("匹配 "+q1 +"And"+q2+",总共查询到"+hits.totalHits+"个文档");
      for(ScoreDoc scoreDoc:hits.scoreDocs){
         Document doc=is.doc(scoreDoc.doc);
         System.out.println(doc.get("fullPath"));
      }
   }

 

posted @   silentmuh  阅读(3352)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
Live2D
欢迎阅读『lucene多条件查询”搜索—BooleanQuery』
  1. 1 Walk Thru Fire Vicetone
  2. 2 爱你 王心凌
  3. 3 Inspire Capo Productions - Serenity
  4. 4 Welcome Home Radical Face
  5. 5 粉红色的回忆 李玲玉
粉红色的回忆 - 李玲玉
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

夏天夏天悄悄过去留下小秘密

压心底 压心底 不能告诉你

晚风吹过温暖我心底 我又想起你

多甜蜜 多甜蜜 怎能忘记

不能忘记你 把你写在日记里

不能忘记你 心里想的还是你

浪漫的夏季 还有浪漫的一个你

给我一个粉红的回忆

喔 夏天夏天悄悄过去依然怀念你

你一言 你一语都叫我回忆

就在就在秋天的梦里 我又遇见你

总是不能忘记你

夏天夏天悄悄过去留下小秘密

压心底 压心底 不能告诉你

晚风吹过温暖我心底 我又想起你

多甜蜜 多甜蜜 怎能忘记

不能忘记你 把你写在日记里

不能忘记你 心里想的还是你

浪漫的夏季 还有浪漫的一个你

给我一个粉红的回忆

喔 夏天夏天悄悄过去依然怀念你

你一言 你一语都叫我回忆

就在就在秋天的梦里 我又遇见你

总是不能忘记你

不能忘记你 把你写在日记里

不能忘记你 心里想的还是你

浪漫的夏季 还有浪漫的一个你

给我一个粉红的回忆

喔 夏天夏天悄悄过去依然怀念你

你一言 你一语都叫我回忆

就在就在秋天的梦里 我又遇见你

总是不能忘记你

点击右上角即可分享
微信分享提示