什么是Lucene

Baidugoogle 的强大的 web 搜索功能早已深入人心,我们现在已经非常依赖于这两个网站了,在学习和工作中,只要遇到我们自己不了解的东西或遗忘了的东西,我们都会到 baidugoogle 上去搜一把。 Google 推出的一款桌面搜索工具 GoogleDesktop 主要用来提供对本机文件的搜索,比操作系统自带的搜索功能强大的多。

那我们能在我们自己开发的系统中加上搜索功能吗?我们 java 开发者能用 java 实现类似的搜索功能吗?我们无所不能的 java 当然可以啊。早在 2001 年之前,就有一个绝顶聪明的人用 java 实现了全文检索功能,该工具包现在已经成为 java 社区中最著名的开源软件之一。这个绝顶聪明的人叫 Doug Cutting ,这个工具包就叫 lucene

Lucene 是一个开源的全文检索工具包,使用 java 实现。从 2000 年开始, Doug Cuttinglucene 放到 SourceForge 上供人随意下载,到了 2001 年, Apache 自由软件联盟将其收入,成为他的一个子项目。从那时起,越来越多的人开始使用和研究他。 Lucene 现在已经成为 java 社区中最著名的开源软件之一,它提供了一组丰富的 API 以供开发者为 java 应用加入全文检索功能。

Lucene 实现全文检索功能主要有三个步骤

<!-- [if !supportLists]-->1、  建立索引 <!-- [endif]-->

建立索引是全文检索的基础, lucene 根据索引检索用户需要查找的目标文档,如果没有索引也就无所谓检索。建立索引时,采用倒排索引的方式进行。什么是倒排呢,就是将一篇文章的文字分成一个个词条,将词条在文章中出现的位置,文章的名称和文章的路径等信息和该词条建立关联。当用户输入关键词检索时, lucene 用词条匹配用户的关键词,匹配成功了,就把此条关联的信息作适当处理输出给用户,这样就用户得到了要查询的结果。

<!-- [if !supportLists]-->2、  查找索引 <!-- [endif]-->

当索引建立好后,就可以对其进行查找了。 Lucene 所建立的索引是存放在文件系统中的,因此查找索引时,需要首先将索引文件打开读入到内存。

<!-- [if !supportLists]-->3、  更新索引 <!-- [endif]-->

由于我们要查找的内容总是不断变化的,所以索引文件也不是一成不变的,而是一个不断更新的过程。 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、付费专栏及课程。

余额充值