Apache Lucene简介

1.搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的出现与Spider(网络爬虫)发展:xcite、Galaxy、Yahoo等繁荣:Infoseek、AltaVista、Google和Baidu
2.什么是Lucene??
(1)Lucene是非常优秀的成熟的 开源的 免费的纯 纯java 语言的全文索引检索工具包。全文检索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
(2)Lucene是一个高性能、可伸缩的信息搜索(IR)库。Information Retrieval(IR) library.它使你可以为你的应用程序添加索引和搜索能力。
(3)Lucene的作者Doug Cutting是资深的全文索引/检索专家,最开始发布在他本人的主页上,2001年10月贡献给APACHE,成为APACHE基金的一个子项目。
(4)Lucene是一个IR库而不是现成的产品,当然也不是Lucene的初识者常常认为的web爬行器。
3.全文搜索系统的结构
Apache Lucene简介
4.为什么使用lucene
(1)Lucene作为一个全文检索引擎,其具有如下突出的优点:
1) 索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文
件。
2)在传统全文检索引擎的 倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
3) 优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。
4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户 扩展新的语言和文件格式,只需要实现文本分析的接口。
5)已经默认实现了一套强大的 查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search)、分组查询等等。
(2)开源, 可扩展能力强,有各种语言版本,适合各种平台.
5.Lucene倒排索引原理
(1)假设有两篇文章1和2
文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.
文章2的内容为:He once lived in Shanghai.
(2)经过分词处理后
文章1的所有关键词为:[tom] [live] [guangzhou] [i] [live] [guangzhou]
文章2的所有关键词为:[he] [live] [shanghai]
(3)加上“出现频率”和“出现位置”信息后,我们的索引结构为:
Apache Lucene简介

Lucene只关注文本的索引和搜索:
Apache Lucene简介

6.Lucene在Java以外的语言中的实现
CLucene - Lucene implementation in C++
dotLucene - Lucene implementation in .NET
Lucene4c - Lucene implementation in C
LuceneKit - Lucene implementation in Objective-C (Cocoa/GNUstep
support)
Lupy - Lucene implementation in Python (RETIRED)
NLucene - another Lucene implementation in .NET (out of date)
Zend Search - Lucene implementation in the Zend Framework for PHP 5
Plucene - Lucene implementation in Perl
KinoSearch - a new Lucene implementation in Perl
PyLucene - GCJ-compiled version of Java Lucene integrated with Python
MUTIS - Lucene implementation in Delphi
Ferret - Lucene implementation in Ruby
7.基于Lucene的搜索程序
Applications and web applications using Lucene include (alphabetically) :
(1) ActiveMath - a user adaptive, interactive and web-based learning environment for mathematics
(2)Aduna AutoFocus - a visual desktop search tool
(3)Aduna Metadata Server - RDF-based indexing server for metadata and full text
(4)Ahahi - a search engine (web,news,image,forum,crawler)
(5)Affiliate Ranker - an affiliate program search engine
(6)Bigsearch.ca - uses nutch, based on lucene open source software to deliver its search results.
(7)BibleDesktop - A Bible study program using lucene to search Bibles
(8)Bixee - Search Engine for Jobs in India.
(9)BNCF Opac - Online Public Access Catalog, indexing data in unimarcslim format
(10)Australia Unclassified - Australia’s 100% FREE online classifieds service
(11)Celoxis - web based project management tool
(12)CodeCrawler - is a smart, web-based search engine specifically built for use by developers for searching source code.
(13)Coolposting - a search engine for discussion forums. Coolposting helps you find the real solutions,experiences and opinions people have posted in different discussion forums.
(14)Corinis CCM - a web content management and community system
(15)CvMail - web based tool for recruiters (to manage job-applications by mail)
……
8.Compass
已加入Opensymphony的Compass 是对Lucene搜索引擎在企业应用(数据库应用)中的增强。
DataMirror 会把数据库的增删改变化实时映射到索引文件中 ,如果没有Compass,我们一般会在每天深夜重建一次索引Compass 对查询的API 也作了一定简化,可以考虑使用将Lucene的索引文件放入数据库或内存。
对索引文件根据不同的主题分开subIndex。
对XML数据进行映射和索引
9.Nutch
你能大概给我们讲解一下Nutch 吗?以及你将在哪方面运用它?
我还是先说一下Lucene吧。Lucene其实是一个提供全文文本搜索的函数库,它不是一个应用软件。它提供很多API函数让你可以运用到
各种实际应用程序中。现在,它已经成为Apache的一个项目并被广泛应用着。这里列出一些已经使用Lucene的系统。
Nutch 是一个建立在Lucene 核心之上的Web 搜索的实现,它是一个真正的应用程序。也就是说,你可以直接下载下来拿过来用。它在
Lucene的基础上加了网 络爬虫和一些和Web相关的东东。其目的就是想从一个简单的站内索引和搜索推广到全球网络的搜索上,就像
Google和Yahoo一样。当然,和那些巨人 竞争,你得动一些脑筋,想一些办法。我们已经测试过100M的网页,并且它的设计用在超过
1B的网页上应该没有问题。当然,让它运行在一台机器上,搜索一些服务器,也运行的很好。
10.开源搜索引擎列表
(1)Egothor
Egothor是一个用Java编写的开源而高效的全文本搜索引擎。借助Java的跨平台特性,Egothor
能应用于任何环境的应用,既可配置为单独的搜索引擎,又能用于你的应用作为全文检索之用。
(2)Nutch
Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包
括全文搜索和Web爬虫。
(3)Lucene
Apache Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。
Lucene的最主要工作是替文件的每一个字作索引,索 引让搜寻的效率比传统的逐字比较大大提高,
Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的 是使使用者可以随时应自已需要自订其功能。
(4)Oxyus
一个纯java写的web搜索引擎。
(5)BDDBot
BDDBot是一个简单的易于理解和使用的搜索引擎。它目前在一个文本文件(urls.txt)列出的URL中爬行,将结果保存在一个数据库中。它也支持一个简单的Web服务器,这个服务器接受来自浏览器的查询并返回响应结果。它可以方便地集成到你的Web站点中。
(6)Zilverline
Zilverline 是一个搜索引擎,它通过web方式搜索本地硬盘或intranet上的内容。Zilverline可以从PDF, Word, Excel, Powerpoint, RTF, txt, java, CHM,zip, rar等文档中抓取它们的内容来建立摘要和索引。从本地硬盘或intranet中查找到的结果可重新再进行检索。Zilverline支持多种语言其中包 括中文。
(7)XQEngine
XQEngine 用于XML文档的全文本搜索引擎.利用XQuery做为它的前端查询语言.它能够让你查询XML文档集合通过使用关键字的逻辑组合.有点类似于 Google与其它搜索引擎搜索HTML文档一样.XQEngine只是一个用Java开发的很紧凑的可嵌入的组件.
(8)MG4J
MG4J可以让你为大量的文档集合构建一个被压缩的全文本索引,通过使内插编码(interpolativecoding)技术.
(9) JXTA Search
JXTA Search是一个分布式的搜索系统.设计用在点对点的网络与网站上.
(10)YaCy
YaCy基于p2p的分布式Web搜索引擎.同时也是一个Http缓存代理服务器.这个项目是构建基于p2p
Web索引网络的一个新方法.它可以搜索你自己的或全局的索引,也可以Crawl自己的网页或启动分布式
Crawling等.
(11)Red-Piranha
Red -Piranha是一个开源搜索系统,它能够真正"学习"你所要查找的是什么.Red-Piranha可作
为你桌面系统(Windows,Linux与 Mac)的个人搜索引擎,或企业内部网搜索引擎,或为你的网站提供搜索功能,或作为一个P2P搜索引擎,或与wiki结合作为一个知识/文档管理解决方 案,或搜索你要的RSS聚合信息,或搜索你公司的系统(包括SAP,Oracle或其它任何Database/Data source),或用于管理PDF,Word和其它文档,或作为一个提供搜索信息的WebService或为你的应用程序(Web,Swing,SWT, Flash,Mozilla-XUL,PHP,Perl或c#/.Net)提供搜索后台等等.
(12)LIUS
LIUS是一个基于Jakarta Lucene项目的索引框架。LIUS为Lucene添加了对许多文件格式的进行索
引功能如:
Ms Word,Ms Excel,Ms PowerPoint,RTF,PDF,XML,HTML,TXT,Open Office序列和JavaBeans。针对
JavaBeans的索引特别有用当我们要对数据库进行索引或刚好用户使用持久层ORM技术如:
Hibernate,JDO,Torque,TopLink进行开发时。
(14)Aperture
Aperture这个Java框架能够从各种各样的资料系统(如:文件系统、Web站点、IMAP和Outlook邮箱)或存在这些系统中的文件(如:文档、图片)爬取和搜索其中的全文本内容与元数据。
(15)Apache Solr
Solr 是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过http收到 一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大 Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
(16)Paoding
Paoding中文分词是一个使用Java开发的,可结合到Lucene应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。Paoding填补了国内中文分词方面开源组件的空白,致力于此并希翼成为互联网网站首选的中文分词开源组件。Paoding中文分词追求分词的高效率和用户良好体验。
11.全球商用搜索市场
Autonomy
公司创始人麦克林奇:在全球商用搜索市场上,Autonomy是老大!Autonomy的市值不足Google的零头,而Google在这一市场的份额也不足Autonomy份额的零头.我们拥有55%的份额,而且这些份额的一半以上来自Google的母国:美国。”林奇说,尽管Google在全球消费搜索市场上取得了巨大成功,但在商用搜索市场上的份额仅为1%。一位微软研发专家透露,在企业搜索领域,Autonomy的技术排名第一。“百度、谷歌等互联网搜索不是真正的搜索引擎,只能称为搜索服务。”