`

什么是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 实现全文检索功能主要有三个步骤

<!-- [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 是什么以及其基本原理,自行研究。

分享到:
评论

相关推荐

    Lucene示例 BM25相似度计算

    首先,我们需要了解什么是Lucene。Lucene是一个由Apache软件基金会开发的高性能、全文本搜索库,提供了对文本的索引和搜索功能。在4.7.1版本中,Lucene已经相当成熟,支持多种索引优化策略和查询方式。 索引构建是...

    java Lucene初级教程

    1.1 什么是lucene  Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2 lucene的工作方式  lucene提供的服务...

    lucene索引查看程序及代码

    首先,我们要了解什么是Lucene索引。Lucene的索引是一种倒排索引,它通过分析文档内容,将每个单词映射到包含该单词的文档集合,从而实现快速查找。然而,对于开发者来说,直接查看这些索引结构通常并不直观,这就...

    lucene.ppt

    **什么是Lucene** Lucene是一个高性能、可伸缩的全文检索工具包,它不是一个完整的搜索引擎产品,而是一个用于构建搜索引擎的基础库。Lucene提供了一套文本分析接口,支持多种语言和文件格式的分析。它的索引文件...

    全文检索(Lucene)详解

    **全文检索(Lucene)详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,用于在各种数据源中进行高效的全文检索。Lucene不仅用于网站搜索引擎,还广泛...

    Lucene开发手册

    **2.1 什么是Lucene** Lucene是一个全文搜索框架,不是独立的搜索引擎。它可以被用于构建各种类型的搜索应用,比如网站搜索引擎、文档库等。类似Servlet在构建Web应用程序中的角色,Lucene提供了底层功能,开发者...

    lucene-analyzers-3.3.0 jar包和源码

    首先,我们要明白什么是Lucene。Lucene是Apache软件基金会的一个项目,它提供了一个高性能、可扩展的全文检索库。这个库可以被用来构建搜索功能,使得开发者能够在自己的应用程序中实现高效的文本搜索。Lucene-...

    Lucene 全文检索

    **Lucene 全文检索** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单但功能强大的 API,可以方便地集成到 Java 应用程序中,实现对文本数据的...

    lucene笔记

    **1.1 什么是Lucene** Lucene是一个由Apache基金会维护的开源全文检索引擎工具包。它为开发者提供了一个简便的接口,使得在应用程序中实现高效的全文检索功能成为可能。Lucene不仅仅是一个简单的搜索工具,而是一个...

    基于Lucene的Web站内信息搜索系统

    **一、什么是Lucene?** Apache Lucene是一个开源的Java库,专门用于实现高性能、可扩展的全文检索。它提供了索引和搜索文本的功能,并且支持多种复杂的搜索语法,使得开发者能够快速地构建出复杂的搜索引擎。...

    Lucene入门学习文档

    **一、什么是Lucene** Lucene是Apache软件基金会下的一个开源全文检索库,它提供了一个高性能、可扩展的信息检索服务。Lucene最初由Doug Cutting开发,现在已经成为Java社区中事实上的标准全文检索引擎库。Lucene...

    Lucene In Action second edition

    ##### 2.1 什么是 Lucene? Apache Lucene 是一个高性能、全功能的文本搜索引擎库。它提供了一套完整的 API 来支持索引创建、文档检索以及查询优化等功能。由于其高度可扩展性和灵活性,Lucene 成为了构建复杂搜索...

    Lucene简单应用

    - **什么是Lucene**:Lucene是一款成熟且免费的Java全文索引检索工具包,由Doug Cutting开发。它支持跨平台使用,被贡献给Apache基金会,成为Apache项目的一部分。Lucene并非成品软件或网络爬虫,而是一个可以集成到...

    lucene in Action 中文版

    在这一章中,读者将了解到什么是Lucene,它为何重要,以及它在信息检索领域的地位。Lucene被定义为一个全文搜索引擎库,用于帮助开发者构建高效、可扩展的搜索功能。本章会介绍Lucene的历史、设计目标以及其在开源...

    Java搜索引擎 Lucene.7z

    1. **什么是Lucene?** Lucene是一个纯Java库,它可以将数据结构化为索引,以便快速搜索。它处理文本,将其分词并创建倒排索引,这是一种高效的数据结构,用于存储文档中每个单词的出现位置信息。这使得搜索操作...

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    web lucene

    1. **Lucene简介**:解释什么是Lucene,它的主要功能,以及为什么在Web开发中选择使用它。 2. **集成Lucene到Web应用**:描述如何将Lucene库添加到Web项目的依赖管理中,例如通过Maven或Gradle配置。 3. **创建...

Global site tag (gtag.js) - Google Analytics