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"));
      }
   }
时间: 2024-10-10 16:56:54

lucene多条件查询”搜索—BooleanQuery的相关文章

大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 Elasticsearch 的特点1.7 Elasticsearch 的核心概念1.7.1 近实时1.7.2 Cluster(集群)1.7.3 Node(节点)1.7.4 Index(索引 --> 数据库)1.7.5 Type(类型 --> 表)1.7.6 Document(文档 -->

记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索

实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度非常棒. 刀不磨要生锈,人不学要落后.每天都要学一些新东西. 基本技术介绍: 还记得上一次做全文搜索是在2013年,主要核心设计与代码均是当时的架构师写的,自己只能算是全程参与. 当时使用的是经典搭配:盘古分词+Lucene.net. 前几篇文章有说到,盘古分词已经很多年不更新了,我在Support

Lucene.Net 站内搜索

Lucene.Net 站内搜索 一  全文检索: like查询是全表扫描(为性能杀手)Lucene.Net搜索引擎,开源,而sql搜索引擎是收费的Lucene.Net只是一个全文检索开发包(只是帮我们存数据取数据,并没有界面,可以看作一个数据库,只能对文本信息进行检索)Lucene.Net原理:把文本切词保存,然后根据词汇表的页来找到文章 二  分词算法: //一元分词算法(引用Lucene.Net.dll)  一元分词算法 //二元分词算法(CJK:China Japan Korean 需要再

基于JieBaNet+Lucene.Net实现全文搜索

实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度非常棒. 刀不磨要生锈,人不学要落后.每天都要学一些新东西. 基本技术介绍: 还记得上一次做全文搜索是在2013年,主要核心设计与代码均是当时的架构师写的,自己只能算是全程参与. 当时使用的是经典搭配:盘古分词+Lucene.net. 前几篇文章有说到,盘古分词已经很多年不更新了,我在Support

Lucene.net站内搜索3—最简单搜索引擎代码

Lucene.Net核心类简介 先运行写好的索引的代码,再向下讲解各个类的作用,不用背代码. (*)Directory表示索引文件(Lucene.net用来保存用户扔过来的数据的地方)保存的地方,是抽象类,两个子类FSDirectory(文件中).RAMDirectory (内存中).使用的时候别和IO里的Directory弄混了. 创建FSDirectory的方法,FSDirectory directory =FSDirectory.Open(new DirectoryInfo(indexPa

多条件异步搜索+分页(PHP、 AJAX、ThinkPHP)

项目中遇到的多条件异步查询及数据分页问题,做了数次尝试,最终虽目的达到,但.....希望能有更好的处理方式 基于 tp框架 1.html页面代码 <div class="h_cityName1"> <div class="h_cityName11"> <span>省</span> <ul class="h_publicB" id="province_id" name=&qu

基于Solr的HBase多条件查询测试

转自:http://www.cnblogs.com/chenz/articles/3229997.html 背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力.针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证. 原理: 基于Solr的HBase多条件查询原理很简单,将HBas

PHP 多条件查询之简单租房系统

注:这里只展示多条件查询页面,其余的增删该页面略过 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ht

关键字查询和多条件查询

0616DBDA.class.php 代码 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/6/16 * Time: 11:23 */ class DBDA { public $host="localhost";//服务器地址 public $uid="root" ;//用户名 public $pwd="";//密码 public $dbconnect;