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

时间: 2024-10-22 00:26:09

Lucene中的 Query对象的相关文章

03.Lucene中的常用类

Document Document是文档或者数据的抽象,它包含很多的Field域对象(可以重复),最终是要被持久化保存到索引库中的 Field Lucene中的域对象,是对原始数据的切割,如:文件名,文件内容,文件大小等.域对象可以指定是否分词,是否索引和是否存储.不分词则会以一个完整的字段出现在索引中(如:商品id.订单号.身份证号等):不索引则不会被检索到,那么分词也没有了意义,但是可以存储(如:文件路径.图片路径等,不用作为查询条件的不用索引):不存储也可以被检索到,这取决于这个Field

Lucene中内置常用Query对象

以下这几种lucene内置查询对象,不过在实际的项目开发中,这种查询方式应用的不多.一般用QueryParser去获取查询对象.因为QueryParser内部基本实现了所有的内置查询对象. 这是最常见的QueryParse的写法 /** * 通过QueryParser去获取查询对象 * * @throws ParseException */ @Test public void searchByQueryParse() throws ParseException { // 1创建QueryPars

Lucene 中自定义排序的实现

使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们就来看看在Lucene中如何实现自定义排序功能. Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和 ScoreDocCom

[Elasticsearch] 控制相关度 (二) - Lucene中的PSF(Practical Scoring Function)与查询期间提升

本章翻译自Elasticsearch官方指南的Controlling Relevance一章. Lucene中的Practical Scoring Function 对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量空间模型(Vector Space Model)来将它们结合在一起,用来收集匹配的文档和对它们进行分值计算. 像下面这样的多词条查询: GET /my_index/doc/_search { "que

【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象

对于一个搜索而言,其核心语句为: searcher.search(query, 10); 此时,其最重要的参数为一个Qeury对象.构造一个Query对象有2种方法:[均以在contents域搜索java关键词为例] (1)使用Query的子类,如BooleanQuery, ConstantScoreQuery, DisjunctionMaxQuery, FilteredQuery, MatchAllDocsQuery, MultiPhraseQuery, MultiTermQuery, Phr

(转)Hibernate中的Query一些基本用法

/*** 添加*/public void save(Stu stu){ try { tran=this.GetSession().beginTransaction(); this.GetSession().save(stu); tran.commit(); } catch (HibernateException e) { throw e; }finally{ this.CloseSession(); }} /*** 使用HQL全查询*/public List getallbyHQL(){ Lis

SQLAlchemy中的Query方法

在SQLAlchemy中执行查询是通过session对象的query方法完成的.query方法非常灵活,你可以根据需要使用不同的查询方式查找数据,下面一一举例.1.直接通过映射类查找: #Querying user instancefor instance insession.query(User).order_by(User.id):  print instance.name,instance.fullname 这种方法只要在query方法中,将映射类作为参数,就可以查询出这个映射类代表的数据

hibernate 中的query的分页查询

//方法描述:根据会员名称和页容量分页查询代理人 public List<HbUser> findUserByPage(int page,int pageSize, String userName)   throws Exception {  Session session = sessionFactory.getCurrentSession();  StringBuffer hql = new StringBuffer("from HbUser where isDelete = 0

spring data mongodb中,如果对象中的属性不想加入到数据库字段中

spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://www.boyunjian.com/javadoc/org.springframework.data/spring-data-mongodb/1.2.3.RELEASE/_/org/springframework/data/mongodb/core/query/Criteria.html#all(jav