Lucene有多种搜索方式,可以根据需要选择不同的方式。
1、词条搜索(单个关键字查找)
主要对象是TermQuery
调用方式如下:
Term term=new Term(字段名,搜索关键字);
Query query=new TermQuery(term);
Hits hits=searcher.search(query);
2、组合搜索(允许多个关键字组合搜索)
主要对象是BooleanQuery
调用方式如下:
Term term1=new Term(字段名,搜索关键字);
TermQuery query1=new TermQuery(term1);
Term term2=new Term(字段名,搜索关键字);
TermQuery query2=new TermQuery(term2);
BooleanQuery booleanquery=new BooleanQuery();
booleanquery.add(query1,参数)
booleanquery.add(query2,参数)
Hits hits=searcher.search(booleanquery);
此方法中的核心在BooleanQuery的add方法上,其第二个参数有三个可选值,对应着逻辑上的与或非关系
参数如下:
BooleanClause.Occur.MUST 必须包含,类似于逻辑运算的与
BooleanClause.Occur.MUST _NOT 必须不包含,类似于逻辑运算的非
BooleanClause.Occur.SHOULD 可以包含,类似于逻辑运算的或
这三者组合,妙用无穷。
3、范围搜索(允许搜索指定范围内的关键字结果)
主要对象是RangeQuery
调用方式如下:
Term term1=new Term(字段名,起始值);
Term term2=new Term(字段名,终止值);
RangeQuery rangequery=new RangeQuery(term1,term2,参数);
Hits hits=searcher.search(rangequery);
此方法中的参数是Boolean类型的,表示是否包含边界 。
true 包含边界
false不包含边界
4、前缀搜索(搜索起始位置符合要求的结果)
主要对象是PrefixQuery
调用方式如下:
Term term=new Term(字段名,搜索关键字);
PrefixQuery prefixquery=new PrefixQuery (term);
Hits hits=searcher.search(prefixquery);
5、短语搜索(根据零碎的短语组合成新的词组进行搜索)
主要对象是PhraseQuery
调用方式如下:
Term term1=new Term(字段名,搜索关键字);
Term term2=new Term(字段名,搜索关键字);
PhraseQuery phrasequery=new PhraseQuery();
phrasequery.setSlop(参数);
phrasequery.add(term1);
phrasequery.add(term2);
Hits hits=searcher.search(phrasequery);
其中setSlop的参数是设置两个关键字之间允许间隔的最大值。
分享到:
相关推荐
利用lucene进行搜索,IndexSearcher是整个Lucene搜索查询相关信息的驱动引擎,在使IndexSearcher之前,需要构建IndexSearcher对象,Lucene提供了两种构建IndexSearcher对象的方式: 1、基于Directory对象构建; 2...
出售一个桌面/硬盘搜索软件,基于Lucene,采用java语言开发,包含开题报告、毕业论文等(我的毕业设计课题,答辩成绩为良) 联系方式: E-mail:e_dao@qq.com
2 lucene的工作方式 lucene提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词...
(2) 各种匹配方式 13 3.4 分页搜索 14 (1) 普通分页 14 (2) searchAfter分页 15 第四章 分词基础 17 4.1 分词效果 17 (1) 准备分词输出类 17 (2) 创建分词器 18 (3) 英文分词效果 18 (4) 中文分词效果 19 4.2 分词...
在lucene搜索分页过程中,可以有两种方式 一种是将搜索结果集直接放到session中,但是假如结果集非常大,同时又存在大并发访问的时候,很可能造成服务器的内存不足,而使服务器宕机 还有一种是每次都重新进行搜索,这样...
基于Lucene的Web站内信息搜索系统.rar 基于多Agent的信息搜索引擎技术研究与应用.rar 基于多Agent的智能搜索引擎系统研究.rar 搜索引擎的研究与实现.rar 搜索引擎中的数据存储问题研究.rar 网络树形搜索引擎的设计...
2:各种搜索方式方法 3:删除索引 4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考学习 public static void main(String[] args) { LuceneUtil luceneUtil = new ...
通过简单的swing来实现lucene的中文分词、以及全文索引的功能 里面有完整的开发步骤和详细的注释,可直接运行!如果需要通过Web的方式调用可以直接调用接口的方法!
**Java公交搜索系统(基于Lucene)** 本资源是一个基于Java语言开发的公交搜索系统,结合了强大的全文搜索引擎Lucene,为用户提供高效、准确的公交线路查询服务。系统采用模块化设计,易于二次开发和定制,可广泛...
“全文检索”功能已经成为客户开发应用平台的重要部分,中文搜索引擎已有多年的发展历史。全文检索产品,开发出独立于原有数据库的检索平台,利用该平台进行文件的采集和搜索...此方式很好地解决了高端用户的搜索需求。
本文主要是研究了全文检索技术的基本原理以及Lucene的架构和工作原理,并介绍了基于Lucene的实时全文检索引擎的设计实现过程。并提供了一个基于Web的简单实现。最后通过实验的方式,对实现的实时全文检索引擎的性能...
前言 ...为了以系统无关的方式用Java技术重新实现我的个人照片档案系统及搜索引擎,我使用了Lucene。Lucene的简单易用远远超过了我的期望—我所期望的其它开源库或工具在概念上简单,但是却难以使用。
通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分,Lucene是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net平台上用C#开发的,数据库是MSSQL Server 2000。主要完成的功能有:用爬虫抓取网页...
3.使用了较新的Lucene.net,目前是3.0版本 4.使用了最后一版盘古分词(2016年版本) 5.使用Winform+webBrowser实现(webBrowser负责显示结果) 使用方式: 1.新建数据库,然后在新建的数据库中执行附件根目录的sql...
它主要实现了根据指定的建立索引的方式(重写、追加写入),通过create标志位来判断,从而指定一种在操作索引文件的过程中删除索引文件的策略。 必须深入地理解IndexWriter索引器初始化的过程,以及在构造一个...
Lucene.net 起初是一个开源项目然后转向商业化,也在Lucene.net 2.0已经发布,不过是要money D ,Lucene.net的命运有点类似于FreeTextBox ,它在 1.6.5 版本之后发布的 2.0 开始了商业路线,2.0 提供了 DLL 方式的...
luke5.3 支持打开lucene5.3及以下的版本,运行方式。java -jar lucene5.3索引查看工具.jar
使用Lucene进行分布式实时搜索 LuMongo是基于Lucene的实时分布式搜索和存储系统。 LuMongo从头开始设计,可以在服务器之间垂直和水平扩展。 LuMongo将Lucene索引直接存储到MongoDB中。 文档可以本地存储在MongoDB中...
Lucene.Net是一种强大的开源搜索技术,它具有一个抽象的目录(称为目录),用于定义索引的存储方式。 AzureDirectory是Windows Azure Blob存储的该接口的实现。 关于 该项目允许您创建Lucene索引并在Azure中使用它们...
基于lucene的小型中文搜索引擎 最近项目中需要自行进行搜索任务,比较紧急,只能采用字符匹配完成。看到全文搜索引擎的相关资料,尝试用之。 使用方式: 引入资源:通过文本文件或者数据库链接引入资源文件(需要...