`
迎风化雨
  • 浏览: 56098 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Lucene搜索应用程序的开发

阅读更多
第一部分 lucene简介
一. Lucene简介
Lucene 是基于 Java 的全文信息检索包,它目前是 Apache Jakarta 家族下面的一个开源项目。在这篇文章中,我们首先来看如何利用 Lucene 实现高级搜索功能,然后学习如何利用 Lucene 来创建一个健壮的 Web 搜索应用程序。
下载地址: http://www.apache.org/dist/lucene/java/
参考网站: http://www.chedong.com/tech/lucene.html

二. lucene与应用程序的关系
Lucene可以为你的应用程序添加索引和搜索能力, Lucene可以索引并能使得可以转换成文本格式的任何数据能够被搜索。在图1可以看出,Lucene并不关心数据的来源、格式甚至它的语言,只要你能将它转换为文本。这就意味着你可经索引并搜索存放于文件中的数据:在远程服务器上web页面,存于本地文件系统的文档,简单的文本文件,微软Word文档, HTML或PDF文件或任何其它能够提取出文本信息的格式。
同样,利用Lucene你可以索引存放于数据库中的数据,提供给用户很多数据库没有提供的全文搜索的能力。一旦你集成了Lucene,你的应用程序的用户就可以索引和搜索email邮件,邮件列表档案,即时聊天记录等等更多。

三. lucene中的类层次结构
其中:
org.apache.lucene 最高级的包
org.apache.lucene.analysis 语言分析器
org.apache.Lucene.documen 存储结构
org.apache.Lucene.index 索引入口
org.apache.Lucene.queryParser 查询分析器
org.apache.Lucene.search 搜索入口
org.apache.Lucene.store 底层IO/存储结构
org.apache.Lucene.util 一些公用的数据结构
lucene的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口.

四. 全文检索Lucene和数据库的比较
Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索引的数据库系统.

五. 一个简单的例子
LuceneDemo1:建立索引
import java.io.File;
import java.io.IOException;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
public class LuceneDemo1 {
        public static void main(String[] args) throws IOException {
                //构造一个file用于存入索引文件
                File file = new File("c:/index");
                //构造一个支持中文的语言分析器
                Analyzer analyzer = new ChineseAnalyzer();
                try {
                        //用指定的中文语言分析器构造一个索引书写器indexWriter,第3个参数表示是否为追加索引
                        IndexWriter indexWriter = new IndexWriter(file,analyzer,true);
                        Date startData = new Date();
                        //构造含有2个字段Field的Document对象
                        //一个为title字段,该字段存储,并且索引,切词
                        //一个为context字段,该字段存储,并且索引,切词
                        Document doc = new Document();
                        doc.add(new Field("title","中华人民共和国",Field.Store.YES,Field.Index.TOKENIZED));
                        doc.add(new Field("context","北京是中国的首都",Field.Store.YES,Field.Index.TOKENIZED));
                        Document doc1 = new Document();
                        doc1.add(new Field("title","中国人民解放军",Field.Store.YES,Field.Index.TOKENIZED));
                        doc1.add(new Field("context","解放军的首要任务是提高警惕,保卫祖国",Field.Store.YES,Field.Index.TOKENIZED));
                        //将文档写入到索引书写器indexWriter中
                        indexWriter.addDocument(doc);
                        indexWriter.addDocument(doc1);
                        //优化索引书写器indexWriter
                        indexWriter.optimize();
                        //关闭索引书写器indexWriter
                        indexWriter.close();
                        Date endData = new Date();
                        System.out.println("索引建立成功");
                        System.out.println("建立索引共用了"+(endData.getTime()-startData.getTime())+"毫钞");
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}

索引已经建立完成,当我们运行程序时会在控制台打印出以下消息:
索引建立成功
建立索引共用了200毫钞
在索引过程中可以看到: Lucene并没有规定数据源的格式,而只提供了一个通用的结构(Document对象)来接受索引的输入,因此输入的数据源可以是:数据库,WORD文档,PDF文档,HTML文档……只要能够设计相应的解析转换器将数据源构造成成Docuement对象即可进行索引。
注意: 当我们建立索引时的在一个document中字段名称相同的时,只会第1个段建立索引.
分享到:
评论

相关推荐

    用 Lucene 加速 Web 搜索应用程序的开发

    "用 Lucene 加速 Web 搜索应用程序的开发" 这个标题指出,我们将探讨如何利用 Apache Lucene 这个全文搜索引擎库来提升 Web 应用程序的搜索性能。Lucene 是一个开源的Java库,专门用于文本搜索,它提供了高效的索引...

    lucene的应用程序扩展

    在 ASP.NET 开发环境中,Lucene.NET 是 Lucene 的 .NET 版本,它允许 .NET 开发人员利用 Lucene 的强大搜索功能,为他们的应用程序添加搜索引擎。 标题中的“lucene的应用程序扩展”指的是将 Lucene.NET 集成到 ASP...

    基于Lucene的搜索引擎的研究与应用

    Lucene是由Apache软件基金会提供的一个开源的全文搜索引擎库,它为用户提供了一组用Java编写的索引和搜索程序库。它具备高性能、可扩展性强的特点,可以用来构建各种搜索引擎应用。Lucene使用倒排索引,能够快速准确...

    Lucene搜索引擎开发权威经典

    在书中,作者首先从第1章开始介绍Lucene的基础,包括Lucene的起源、核心概念,如索引、文档、字段和分词,以及如何构建一个简单的Lucene应用程序。这为读者提供了对Lucene搜索引擎的基本认识,并建立起对后续章节...

    lucene应用开发揭秘 第四讲

    ### Lucene应用开发揭秘第四讲知识点详解 #### 一、概览 《Lucene应用开发揭秘第四讲》是由觉先华老师主讲的一次技术分享,主要围绕如何设计高效的索引格式来进行讲解。本讲中重点介绍了词典的存储方式以及倒排表...

    Lucene(搜索引擎)开发包

    **Lucene 搜索引擎开发包详解** Lucene 是一个开源的全文检索库,由 Apache 软件基金会维护。它提供了高性能、可扩展的搜索功能,广泛应用于网站、应用程序及大数据分析等领域。作为 Java 语言编写的核心库,Lucene...

    Lucene+Nutch搜索引擎开发.王学松源代码

    首先,Lucene是一个高性能、全文检索库,它提供了一个简单的API,使得开发者能够方便地在自己的应用程序中实现文本检索功能。Lucene主要由以下几个核心组件构成: 1. 文档索引:Lucene通过分析文本,将文档内容转换...

    lucene索引查看程序及代码

    《深入理解Lucene索引查看程序与代码》 在信息技术领域,搜索引擎的高效运作离不开底层索引技术的支持,而Lucene作为Apache软件基金会的一个开放源代码项目,正是一个强大的全文检索库,它提供了高效的文本搜索功能...

    Lucene搜索引擎开发

    在Java世界中,Lucene是一个强大的全文搜索引擎库,它为开发者提供了在应用程序中构建高效、可扩展的搜索功能的能力。Lucene是Apache软件基金会的项目之一,其核心功能包括文本分析、索引创建、查询解析和结果排序等...

    Lucene 简单入门程序实例

    这些技术共同构成了现代Web应用程序的基础,而Lucene可以作为其搜索功能的重要组成部分。 ### Lucene的适用场景 文档指出,当面对大量数据和文本字段时,Lucene是一个理想的选择。对于非结构化的文档数据,Lucene...

    lucene源码和程序

    它的设计目标是使得在Java应用程序中实现全文检索变得简单易行。 首先,我们要了解全文检索的基本概念。全文检索是一种信息检索技术,它允许用户通过输入任意文本(不仅仅是文件名或关键词)来查找相关文档。Lucene...

    Lucene 搜索方法(多短语搜索)

    Lucene是一个高性能、全文本搜索库,它提供了一个强大的文本检索框架,使得开发者能够为他们的应用程序添加高级搜索功能。多短语搜索是指在查询中包含两个或更多相邻词的短语,它比单个词的搜索更为精确,有助于用户...

    Lucene全文搜索_LuceneJava全文搜索_

    这个库使得开发者能够轻松地在应用程序中集成高级的搜索功能,支持英文和其他语言的全文搜索,同时具备模糊查询和智能查询的能力。 在"Lucene全文搜索_LuceneJava全文搜索_"这个主题中,我们将深入探讨Lucene如何在...

    lucene3.6 搜索例子

    Apache Lucene 是一个开源全文搜索引擎库,为开发者提供了在Java应用程序中实现高效、可扩展的搜索功能的工具。在本篇文章中,我们将深入探讨Lucene 3.6版本中的搜索功能,通过实例解析其核心概念和操作流程。 一、...

    LUCENE搜索引擎基本工作原理

    Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **一、全文搜索引擎** 全文搜索引擎...

    lucene站内搜索

    它提供了丰富的文本分析、索引和搜索功能,使得开发者能够轻松地在自己的应用程序中实现复杂的全文检索功能。 ### 一、Lucene基本概念 1. **索引(Index)**: Lucene首先将文档内容转换为可搜索的结构化数据,即...

    Lucene开发手册

    类似Servlet在构建Web应用程序中的角色,Lucene提供了底层功能,开发者需要在其基础上构建具体的搜索引擎应用。Nutch是基于Lucene的一个著名搜索引擎项目。 **2.2 Lucene能做什么** Lucene的主要功能是对文本进行...

    Java全文检索引擎Lucene的应用.pdf

    尽管Lucene本身并不是一个完整的全文索引应用程序,但它提供了一套完整的查询引擎和索引引擎,实现了一些通用的分词算法,并预留了许多词法分析器接口,使得用户可以根据自己的需求进行扩展。此外,由于Lucene是用...

    Lucene测试程序3.5

    通过创建索引、使用标准分词器进行文本分析以及执行检索操作,我们可以看到Lucene如何在幕后高效地工作,使应用程序具备强大的搜索功能。对于学习和掌握Lucene的开发者而言,这是一个非常有价值的实践资源。

Global site tag (gtag.js) - Google Analytics