Lucene中的 Query对象
"Lucene中的 Query对象":
检 索前,需要对检索字符串进行分析,这是由queryparser来完成的。为了保证查询的正确性,最好用创建索引文件时同样的分析器。 queryparser解析字符串时,可以指定查询域,实际可以在字符串中指定一个或多个域。例如:“info:电视台 and id:3329”,“info:电视台”,“电视台”,假如不指定默认域,就会在默认域查询。
queryparser调用静态方法parse后会返回query的实例,原子查询。例如:“info:电视台 and id:3329”会返回booleanquery,“info:电视台”或“电视台”会返回phrasequery,“台”会返回termquery。
lucene内建query对象:
termquery:词条查询。通过对某个词条的指定,实现检索索引中存在该词条的所有文档。
booleanquery:布尔查询。lucene中包含逻辑关系:“与”,“或”,“非”的复杂查询,最终都会表示成booleanquery。布尔查询就是一个由多个子句和子句之间组成的布尔逻辑所组成的查询。
rangequery:范围查询。这种范围可以是日期,时间,数字,大小等等。
prefixquery:前缀查询。
phrasequery:短语查询。默认为完全匹配,但可以指定坡度(slop,默认为0)改变范围。比如slop=1,检索短语为“电台”,那么在“电台”中间有一个字的也可以被查找出来,比如“电视台”。
multiphrasequery:多短语查询。
fuquery:模糊查询。模糊查询使用的匹配算法是levenshitein算法。此算法在比较两个字符串时,将动作分
此文来自: 马开东博客 转载请注明出处 网址:http://www.makaidong.com
为3种:加一个字母(insert),删一个字母(delete),改变一个字母(substitute)。
wildcardquery:通配符查询。“*”号表示0到多个字符,“?”表示单个字符。
spanquery:跨度查询。此类为抽象类。
spantermquery:检索效果完全同termquery,但内部会记录一些位置信息,供spanquery的其它api使用,是其它属于spanquery的query的基础。
spanfirstquery:查找方式为从field的内容起始位置开始,在一个固定的宽度内查找所指定的词条。
spannearquery:功能类似pharasequery。spannearquery查找所匹配的不一定是短语,还有可能是另一个spanquery的查询结果作为整体考虑,进行嵌套查询。
spanorquery:把所有spanquery查询结果综合起来,作为检索结果。
spannotquery:从第一个spanquery查询结果中,去掉第二个spanquery查询结果,作为检索结果。
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:表示“或”关系,最终检索结果为所有检索子句的并集
Lucene中的 Query对象的更多相关文章
- 理解Lucene中的Query
Query是一个接口,它有很多实现类. QueryParser是Query解析器,用于将一个字符串解析为一个Query对象,这个Query对象可能属于TermQuery,也可能属于PhraseQuer ...
- Hibernate中的Query对象查询所有记录
映射文件,核心文件,实体类,工具类的内容都不变直接看测试方法中的代码: package com.yinfu.test; import java.util.List; import org.hibern ...
- 【Lucene3.6.2入门系列】第03节_简述Lucene中常见的搜索功能
package com.jadyer.lucene; import java.io.File; import java.io.IOException; import java.text.SimpleD ...
- Lucene 中自定义排序的实现
使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们 ...
- Lucene 中的Tokenizer, TokenFilter学习
lucene中的TokenStream,TokenFilter之间关系 TokenStream是一个能够在被调用后产生语汇单元序列的类,其中有两个类型:Tokenizer和TokenFilte ...
- 《Lucene in Action 第二版》第4章节 学习总结 -- Lucene中的分析
通过第四章的学习,可以了解lucene的分析过程是怎样的,并且可以学会如何使用lucene内置分析器,以及自定义分析器.下面是具体总结 1. 分析(Analysis)是什么? 在lucene中,分析就 ...
- lucene中Field简析
http://blog.csdn.net/zhaoxiao2008/article/details/14180019 先看一段lucene3代码 Document doc = new Document ...
- lucene中创建索引库
package com.hope.lucene;import org.apache.commons.io.FileUtils;import org.apache.lucene.document.Doc ...
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
随机推荐
- UNIX基础--权限
权限 Permissions FreeBSD使用传统的UNIX®系统的基本权限.在UNIX®系统中,基本权限分配了三种访问类型:读.写.执行.权限可以用字母r.w.x表示:也可以用二进制数表示,按rw ...
- Chapter 15_3 使用环境
创建模块的基本方法的缺点在于,忘记使用local,很容易就污染全局空间. “函数环境”是一种有趣的技术,它能够解决上面的问题.就是让模块的主程序块独占一个环境. 这样不仅它的所有函数可以共享这个tab ...
- 笨方法学python--读文件
1 raw_input()的另外用法 prompt = '> ' likes = raw_input(prompt) 提示符> 可以不用每次输入,要修改,只修改一个地方. 2 读取文件 t ...
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...
- 存储过程sql语句
select count(virtualacc) into v_count from T_ATMMONITOR WHERE virtualacc = v_number; 用于存储过程中,是把coun ...
- 了解Sql
什么是数据库: 数据库是一个以某种有组织的方式存储的数据集合,也可以理解为有组织的数据的容器.数据库相当于文件柜. 表相当于文件柜中的抽屉,表用来存储资料,一个数据库中的表必须唯一. 列,表中的一个字 ...
- NEU OJ 1644 Median I
优先级队列 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- Android底部导航栏创建——ViewPager + RadioGroup
原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...
- Varnish && Varnish Cache
1 1 1 Varnish https://www.varnish-cache.org/intro/index.html#intro Introduction to Varnish The basic ...
- js 系统时间对象
alert(new Date()); 年是多少,月,日 var year=new Date(); var m=year.Getfullmonth; alert(m);月份特殊,必须加个数字1 数据类型 ...