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 ...
随机推荐
- LeetCode OJ 42. Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- TortoiseGit - pull 与 fetch
Git的Pull其实是fetch与Merge两个命令的合并. 平时遇到的问题是,在本地分支进行了一些修改,准备提交.但是怕提交前有其他人push了新的代码.于是想在提交前,看看远程仓库上的log.这时 ...
- SqlServer 汉字转换拼音首字母函数
CREATE function [dbo].[Func_GetPY](@str nvarchar(4000))returns nvarchar(4000)asbegin set @str=RTRIM( ...
- linux yum安装mongodb
1.yum -y install mongodb-server mongodb 2.service mongod start #启动mongodb 服务 3. ...
- CRC的校验原理
一.基本原理 CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列:附加在数据序列之后的这个检验码与数据序列的内容之间存在着 ...
- java代码如何读取properties文件
我们在开发工程中,有时候需要在Java代码中定义一些在部署生产环境时容易改变的变量,还需要我们单独放在一个外部属性文件中,方便我们将来修改.这里列出了两种比较方便的方式. 一.在Spring配置文件中 ...
- Python mining
1.pandas,使用pycharm安装 http://bbs.pinggu.org/thread-3633477-1-1.html 2.eric4 快捷键 http://blog.csdn.net ...
- hdu_4828_Grids(卡特兰数+逆元)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4828 题意:中文,不解释 题解:实际就是一个卡特兰递推: Catalan(n+1)= Catalan( ...
- C++ 中Hello World的一种写法
/*C++ Hello World**/#include <stdio.h>#include <iostream>int main(){ printf("Hel ...
- 用 openSSL 生成 公钥 私钥
支付宝app接口需要 RSA加密通讯 https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docTyp ...