Lucene
:基于
Java
的全文检索引擎简介
Lucene
是一个基于
Java
的全文索引工具包。
基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史
全文检索的实现:Luene全文索引和数据库索引的比较
中文切分词机制简介:基于词库和自动切分词算法的比较
具体的安装和使用简介:系统结构介绍和演示
Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展
从Lucene我们还可以学到什么
另外,如果是在选择全文引擎,现在也许是试试
Sphinx
的时候了:相比
Lucene
速度更快,
有中文分词的支持
,而且内置了对简单的分布式检索的支持;
基于Java的全文索引**/检索引擎——Lucene**
Lucene
不是一个完整的全文索引应用,而是是一个用
Java
写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引
/
检索功能。
Lucene
的作者:
Lucene
的贡献者
Doug Cutting
是一位资深全文索引
/
检索专家,曾经是
V-Twin
搜索引擎
(Apple
的
Copland
操作系统的成就之一
)
的主要开发者,后在
Excite
担任高级系统架构设计师,目前从事于一些
INTERNET
底层架构的研究。他贡献出的
Lucene
的目标是为各种中小型应用程序加入全文检索功能。
Lucene
的发展历程:早先发布在作者自己的
www.lucene.com
,后来发布在
SourceForge
,
2001
年年底成为
APACHE
基金会
jakarta
的一个子项目:
http://jakarta.apache.org/lucene/
已经有很多
Java
项目都使用了
Lucene
作为其后台的全文索引引擎,比较著名的有:
·
Jive
:
WEB
论坛系统;
·
Eyebrows
:邮件列表
HTML
归档
/
浏览
/
查询系统,本文的主要参考文档
“TheLucene search engine: Powerful, flexible, and free”
作者就是
EyeBrows
系统的主要开发者之一,而
EyeBrows
已经成为目前
APACHE
项目的主要邮件列表归档系统。
·
Cocoon
:
基于
XML
的
web
发布框架,全文检索部分使用了
Lucene
·
Eclipse
:
基于
Java
的开放开发平台,帮助部分的全文索引使用了
Lucene
对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于
Lucene
的结构的介绍,你会了解到由于
Lucene
良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。
全文检索的实现机制
Lucene
的
API
接口设计的比较通用,输入输出结构都很像数据库的表
==>
记录
==>
字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到
Lucene
的存储结构
/
接口中。总体上看:可以先把Lucene****当成一个支持全文索引的数据库系统
。
比较一下
Lucene
和数据库:
Lucene | 数据库 |
索引数据源:doc(field1,field2…) doc(field1,field2…) / indexer / _____________ | Lucene Index| ————– / searcher / 结果输出:Hits(doc(field1,field2) doc(field1…)) | 索引数据源:record(field1,field2…) record(field1..) / SQL: insert/ _____________ | DB Index | ————- / SQL: select / 结果输出:results(record(field1,field2..) record(field1…)) |
Document:一个需要进行索引的“单元” 一个Document由多个字段组成 | Record:记录,包含多个字段 |
Field:字段 | Field:字段 |
Hits:查询结果集,由匹配的Document组成 | RecordSet:查询结果集,由多个Record组成 |
1 | 1 |
全文检索****≠ like "%keyword%"
通常比较厚的书籍后面常常附关键词索引表(比如:北京:
12, 34
页,
上海:
3,77
页