全文检索工具Lucene初步认识 - 中国搜索技术门户

推荐给好友 上一篇 | 下一篇

全文检索工具Lucene初步认识

本站欢迎转载,但任何媒体、网站或个人转载使用时请注明来源:中国搜索门户http://www.cnsousuo.com/viewnews-293

【中国搜索门户讯】

lucene不是一个完整的全文检索应用,它是用JAVA写的全文检索的工具包。

Lucene选择面向对象的方法将索引的架构模块化,可以选择多种语言来实现这个搜索引擎而不必改变整体架构。

我们给出它的体系结构图。请参考下图:

arch

图 Lucene软件架构

各个模块是使用符合MDA规则的,方便用户选择有效的接口,也为用户定制自己所需的各个模块提供高可扩展性。各个模块之间保持固定的协议,将实现方法隐藏起来。

从图1.6我们可以了解到,Lucene一共分为5个模块,分别是:Corpus(语料库)、Analysis(解析)、Index(索引)、Storage(存储)、Search(搜索)。每一模块从逻辑上又可以再划分为2部分:交互协议部分与具体实现部分。

Corpus(语料库)中是需要被解析的文档。语料库为Analysis模块提供了访问协议,Analysis通过该协议得到料库的内容。

Analysis(解析)模块为搜索Search(模块)和Index(索引)模块提供了相同的解析过程(交互协议相同)。Lucene建立索引过程中,需要对被索引的文件进行分析;对于搜索过程而言,用户输入的查询条件,也需要通过解析(Analysis),通过相同的解析过程后,用户的查询信息才能和从文本解析出的信息相匹配,才能返回给用户正确的结果。

Index(索引)模块提供2种访问协议。一种为搜索提供访问,另一种协议为维护索引提供服务。使用Lucene创建索引时,需要对文本内容建立索引;而对索引维护也可以通过该接口访问索引,更新索引信息,优化索引。

Storage(存储)模块也提供了2种保存索引方式,一种将索引信息存放在内存中,一种针对索引信息存放在物理磁盘中。RAM存储接口可以批量地索引文件,加快标引速度。

Search(搜索)模块是用户和Lucene交互的一个窗口。用户输入的内容都通过该模块进入到Lucene的内部,然后通过Search模块,最后返回给用户相关信息,完成查询工作。



lucene包包括:

org.apache.lucene.document

这个包提供了一些为封装要索引的文档所需要的类,比如 Document, Field。这样,每一个文档最终被封装成了一个 Document 对象。

org.apache.lucene.analysis

这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。

org.apache.lucene.index

这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter 和 IndexReader,其中 IndexWriter 是用来创建索引并添加文档到索引中的,IndexReader 是用来删除索引中的文档的。

org.apache.lucene.search

这个包提供了对在建立好的索引上进行搜索所需要的类。比如 IndexSearcher 和 Hits, IndexSearcher 定义了在指定的索引上进行搜索的方法,Hits 用来保存搜索得到的结果。

org.apache.Lucene.store

这个包提供了底层IO/存储结构

org.apache.Lucene.util

这个包提供一些公用的数据结构

org.apache.Lucene.queryParser

这个包提供了查询的分析器

lucene的实现机制:


索引数据源:doc(field1,field2...) doc(field1,field2...)......         
                                                \   indexer /               
                                             _____________             
                                             | Lucene Index   |                
                                             ---------------------                
                                                / searcher \
结果输出:      Hits(doc(field1,field2) doc(field1...)......)


lucene应用流程:


1。建立索引   用Document(field字段)来创建index(包括分词和持久化等等):Document, Field, IndexWriter, Analyzer, Directory
2。中文分词    analysis:自动切分和词表切分;正向切分、反向切分和双向切分
3。搜索结果    search 结果hits:IndexSearcher, Term, Query, TermQuery, Hits



TAG: LUCENE lucene 全文检索 Lucene
 

评分:0

我来说两句

seccode