lucene

Baidu和google的强大的web搜索功能早已深入人心,我们现在已经非常依赖于这两个网站了,在学习和工作中,只要遇到我们自己不了解的东西或遗忘了的东西,我们都会到baidu或google上去搜一把。Google推出的一款桌面搜索工具GoogleDesktop主要用来提供对本机文件的搜索,比操作系统自带的搜索功能强大的多。 那我们能在我们自己开发的系统中加上搜索功能吗?我们java开发者能用java实现类似的搜索功能吗?我们无所不能的java当然可以啊。早在2001年之前,就有一个绝顶聪明的人用java实现了全文检索功能,该工具包现在已经成为java社区中最著名的开源软件之一。这个绝顶聪明的人叫Doug Cutting,这个工具包就叫lucene。 Lucene是一个开源的全文检索工具包,使用java实现。从2000年开始,Doug Cutting把lucene放到SourceForge上供人随意下载,到了2001年,Apache自由软件联盟将其收入,成为他的一个子项目。从那时起,越来越多的人开始使用和研究他。Lucene现在已经成为java社区中最著名的开源软件之一,它提供了一组丰富的API以供开发者为java应用加入全文检索功能。 Lucene实现全文检索功能主要有三个步骤 1、 建立索引 建立索引是全文检索的基础,lucene根据索引检索用户需要查找的目标文档,如果没有索引也就无所谓检索。建立索引时,采用倒排索引的方式进行。什么是倒排呢,就是将一篇文章的文字分成一个个词条,将词条在文章中出现的位置,文章的名称和文章的路径等信息和该词条建立关联。当用户输入关键词检索时,lucene用词条匹配用户的关键词,匹配成功了,就把此条关联的信息作适当处理输出给用户,这样就用户得到了要查询的结果。 2、 查找索引 当索引建立好后,就可以对其进行查找了。Lucene所建立的索引是存放在文件系统中的,因此查找索引时,需要首先将索引文件打开读入到内存。 3、 更新索引 由于我们要查找的内容总是不断变化的,所以索引文件也不是一成不变的,而是一个不断更新的过程。Lucene也提供了丰富的功能来支持索引的更新功能。 下面的代码演示了lucene如何将存储与本地的文件建立索引 // 索引文件存放的路径 File INDEX_DIR = new File("index"); IndexWriter writer = new IndexWriter(INDEX_DIR, new StandardAnalyzer(), true); //要建立索引的文件的目录 File file= new File(args[0]); writer.addDocument(FileDocument.Document(file)); 下面的代码演示了lucene如何检索索引 IndexReader reader = IndexReader.open(new File("index")); Searcher searcher = new IndexSearcher(reader); QueryParser parser = new QueryParser(field, new StandardAnalyzer()); Hits hits = searcher.search(query);//hits类似于jdbc中的Resultset 本文只是简单的介绍了一下lucene是什么以及其基本原理,对此感兴趣的同学可以下载完整的示例工程,自行研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值