lucene预研

 一、简介

Apache Lucene(TM) is a high-performance, full-featured text searchengine library written entirely in Java. It is a technology suitable for nearlyany application that requires full-text search, especially cross-platform.

Apache Lucene is an open source project available for freedownload.

来自百科的介绍

Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

它的优点:

  (1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

  (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。

  (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。

  (4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

  (5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。

个人理解:它是一个全文检索的框架,不是现成的产品可以直接就用,要用它还有漫长的工作要做哦。Solr是基于lucene实现的产品,能为企业提供成熟的检索服务,配置一下就能使用。


官方主页http://lucene.apache.org

Lucene指南http://lucene.apache.org/core/

Solr指南http://lucene.apache.org/solr/4_0_0/tutorial.html

二、相关知识点

lucene搜索原理

Lucene搜索具体的实现是两步:对搜索资源建立索引,然后在索引的基础上搜索。Lucene采用的是反向索引机制,通过实现特定API,完成文档建立索引的工作,然后通过特定的类,封装搜索结果,供应用程序处理。

 

Lucene处理过程

Lucene和应用之间关系

1.1、反向索引的概念

反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射。反向索引通常利用关联数组实现。它拥有两种表现形式:

 

inverted file index,其表现形式为 {单词,单词所在文档的ID}

full inverted index,其表现形式为{单词,(单词所在文档的ID,在具体文档中的位置)}

具体实例,假设有三个文档:

T0 = "itis what it is"

T1 = "whatis it"

T2 = "itis a banana"

那么,采用invertedfile index方式,结果是:
"a": {2}
"banana": {2}
"is": {0, 1, 2}
"it": {0, 1, 2}
"what": {0, 1}
采用full inverted index方式,结果是:

"a":     {(2, 2)}
"banana": {(2, 3)}
"is":     {(0, 1), (0, 4), (1,1), (2, 1)}
"it":     {(0, 0), (0, 3), (1,2), (2, 0)}
"what":   {(0, 2), (1, 0)}

 

1.2lucene解析机制

 

Lucene 使用各种解析器对各种不同类型的文档进行解析。比如对于 HTML 文档,HTML 解析器会做一些预处理的工作,比如过滤文档中的 HTML 标签等等。HTML 解析器的输出的是文本内容,接着 Lucene 的分词器(Analyzer)从文本内容中提取出索引项以及相关信息,比如索引项的出现频率。接着Lucene 的分词器把这些信息写到索引文件中。

 

  

三、实践(lucene4.0.0)

Demo地址

http://lucene.apache.org/core/4_0_0/demo/overview-summary.html#Setting_your_CLASSPATH

1、创建maven工程

2、导入依赖jar,pom依赖如下所示

 

3、工程如下所示


4、运行

原文是这么说的

Once you've gotten this far you're probably itching togo. Let's build an index! Assuming you've set your CLASSPATHcorrectly, just type:

    javaorg.apache.lucene.demo.IndexFiles -docs {path-to-lucene}/src

This will produce a subdirectorycalled index which will contain an index of all of the Lucene sourcecode.

To search the index type:

    javaorg.apache.lucene.demo.SearchFiles

eclipse里面做法

4.1、工程右键run->Run configuration->new javaapplication选择IndexFiles并设置输入参数

  

运行结果:

 

4.2、工程右键run->Run configuration->new javaapplication选择SearchFiles并设置输入参数

 

 

运行之后在console中输入搜索关键字可看到检索结果(demo不支持中文分词)

  

Lucene4还提供了个war包,但有问题,web.xml配置class路径不对, 缺了一个lucene-analyzers-common-4.0.0.jar


备注: 

项目由于兼容性的考虑只能用jdk5。。。故只好考虑lucene3.6.1。无语。。。

 

LuceneJava has the following minimum requirements:

·        Java 1.5.x orgreater.

·        ANT 1.7.0 or greater.

·        CPU, Disk and Memoryrequirements are based on the many choices made in implementing Lucene(document size, number of documents, and number of hits retrieved to name afew.)

 

IBMJDK会有这个问题,解决办法参考下面链接

http://www.webspherechina.net/?action-blogdetail-uid-14253-id-53453.html


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值