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:表示“或”关系,最终检索结果为所有检索子句的并集。

时间: 2025-01-16 18:46:45

Lucene 单域多条件查询的相关文章

php 多条件查询 例子

<hl>表单的多条件查询</h1> <form action="这个表.php" method="post"> <div> 请输入查询的名字:<input type="text" name="name" /> 请输入查询址性别:<input type="text" name="sex" /> <input ty

lucene多条件查询”搜索—BooleanQuery

/** * "多条件查询"搜索-BooleanQuery * BooleanQuery也是实际开发过程中经常使用的一种Query. * 它其实是一个组合的Query,在使用时可以把各种Query对象添加进去并标明它们之间的逻辑关系. * 在本节中所讨论的所有查询类型都可以使用BooleanQuery综合起来. * BooleanQuery本身来讲是一个布尔子句的容器,它提供了专门的API方法往其中添加子句, * 并标明它们之间的关系,以下代码为BooleanQuery提供的用于添加子句

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

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

大数据技术之_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(文档 -->

asp.net(C#)中实现多个DropDownList及多个TextBox的多条件查询

这里是通过语句拼接来实现多条件查询的 主要代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default19.aspx.cs" Inherits="Default19" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt

thinkphp分页+条件查询

最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method=get 2.后台代码用I('get.parameterName')获取URL参数(查询条件) 3.修改thinkphp3.2.3的Page类: 第47行 改为$this->parameter  = empty($parameter) ? array_urlencode($_GET) : $param

基于Struts2+Hibernate的DetachedCriteria多条件查询

上一篇我们讲诉了基于SSH框架利用Criteria的多条件查询,这一篇我们就接着来看基于SSH框架利用DetachedCriteria的多条件查询. 一.Jsp表单查询页 1 <form action="${pageContext.request.contextPath}/CourseTypeAction_listCourse.action" 2 method="post"> 3 <table width="88%" borde

基于Struts2+Hibernate的Criteria多条件查询

Hibernate 定义了CriteriaSpecification接口规范用来完成面向对象的条件查询,Criteria 和 DetachedCriteria 就是CriteriaSpecification的子接口. 在进行本篇的内容之前,我们先来大致说一说Criteria 和 DetachedCriteria 的主要区别: Criteria 和 DetachedCriteria 的创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的:而 D

jdbc案例_分页_条件查询

客户信息增删改查系统 软件工程开发流程:1.瀑布模型 2.螺旋模型 RUP (Rational Unified Process,统一软件开发过程 ) 采用瀑布模型: 需求 --- 需求分析 --- 系统设计(概要.详细设计)---- 编码 --- 测试 --- 实施 --- 维护 * 瀑布模型 缺陷在编码结束之前,客户看不到最终软件产品 ,如果需求.设计出现明显错漏,导致软件后期无法维护,存在重大缺陷 * 瀑布模型对于 新型软件,需求不定软件 风险较大 敏捷开发理念:迭代开发模式 ,将系统功能分