• 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"));
          }
       }
    
  • 相关阅读:
    setup命令开机启动服务配置
    setup命令网卡配置
    ARM架构与ARM内核
    菁华开示目录
    末法时代选修净土法门可得解脱
    净宗之声 | 向知识分子介绍净土法门(文声对照)
    1217. 无量寿经颂序
    150.2 重刻安士全书序二
    往生典范|黄忠昌往生记实+西方发愿文+止语的好处等
    深度揭秘|邪淫、艳遇背后的真相(影音+图文)
  • 原文地址:https://www.cnblogs.com/silentmuh/p/7795236.html
Copyright © 2020-2023  润新知