lucene3.0中检索方法的使用介绍

本文介绍Lucene中的QueryParser,一种将用户输入转换为Query对象的工具。通过QueryParser,可以实现复杂的多字段查询,如布尔查询、范围查询等。文章还列举了Lucene内建的多种Query对象类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 QueryParser是一个非常通用的帮助类,他的作用是把用户输入的文本转换为内置的Query对象(大多数web搜索引擎都提供一个查询输入框来让用户输入查询条件)。QueryParser内置提供了很多语法使可以使用输入的各种高级条件的 Query。为了保证查询的正确性,最好用创建索引文件时同样的分析器。QueryParser解析字符串时,可以指定查询域,实际可以在字符串中指定一个或多个域。

QueryParser调用静态方法Parse后会返回Query的实例,原子查询。例如:“title:电视台 source:亲亲宝宝”会返回BooleanQuery,“title:电视台”或“电视台”会返回PhraseQuery,“台”会返回TermQuery。 
“title:电视台 site:亲亲宝宝” 查询标题为电视台 或者来源是亲亲宝宝
“+title:电视台 site:亲亲宝宝” 查询标题必须包含电视台,来源是亲亲宝宝
“-title:电视台 site:亲亲宝宝” 查询标题不能包含电视台,来源是亲亲宝宝
根据这个,可以做类似google,百度的在一个输入框中实现多字段查询,具体使用方法如下:

String field = "contents";

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,analyzer);

Query query = parser.parse(str);

Term 是搜索的基本单元。与Field对象类似,它由一对字符串元素组成:字段的名称和字段的值。注意Term对象也和索引过程有关。但是它们是由Lucene内部生成,所以在索引时你一般不必考虑它们。在搜索时,你可能创建Term对象并与TermQuery同时使用

Query q = new TermQuery(new Term(“contents”, “lucene”));

Lucene 内建Query 对象 
TermQuery:词条查询。通过对某个词条的指定,实现检索索引中存在该词条的所有文档。 
BooleanQuery:布尔查询。Lucene中包含逻辑关系:“与”,“或”,“非”的复杂查询,最终都会表示成BooleanQuery。布尔查询就是一个由多个子句和子句之间组成的布尔逻辑所组成的查询。 
RangeQuery:范围查询。这种范围可以是日期,时间,数字,大小等等。 
PrefixQuery:前缀查询。 
PhraseQuery:短语查询。默认为完全匹配,但可以指定坡度(Slop,默认为0)改变范围。比如Slop=1,检索短语为“电台”,那么在“电台”中间有一个字的也可以被查找出来,比如“电视台”。 
MultiPhraseQuery:多短语查询。 
FuzzyQuery:模糊查询。模糊查询使用的匹配算法是levensh-itein算法。此算法在比较两个字符串时,将动作分为3种:加一个字母(Insert),删一个字母(Delete),改变一个字母(Substitute)。 
WildcardQuery:通配符查询。“*”号表示0到多个字符,“?”表示单个字符。 
SpanQuery:跨度查询。此类为抽象类。 
SpanTermQuery:检索效果完全同TermQuery,但内部会记录一些位置信息,供SpanQuery的其它API使用,是其它属于SpanQuery的Query的基础。 
SpanFirstQuery:查找方式为从Field的内容起始位置开始,在一个固定的宽度内查找所指定的词条。 
SpanNearQuery:功能类似PharaseQuery。SpanNearQuery查找所匹配的不一定是短语,还有可能是另一个SpanQuery的查询结果作为整体考虑,进行嵌套查询。 
SpanOrQuery:把所有SpanQuery查询结果综合起来,作为检索结果。 
SpanNotQuery:从第一个SpanQuery查询结果中,去掉第二个SpanQuery查询结果,作为检索结果。 

相关文章:

  1. lucene3.0范围查找TermRangeQuery
  2. lucene3.0中两个索引文件的联合查询
  3. lucene3.0分词结果显示
  4. Lucene3.0正式发布了
  5. lucene3.0 中BooleanQuery 的使用
  6. lucene3.0中使用MultiFieldQueryParser多字段查找
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值