Lucene

Lucene是一套用于全文检索和搜尋的開放源碼程式庫，由Apache软件基金会支持和提供。Lucene提供了一個簡單卻強大的應用程式介面，能夠做全文索引和搜索。Lucene被广泛应用作搜索应用的标准基础库。

Lucene现已被移植到其他编程语言，包括Object Pascal、Perl、C#、C++、Python、Ruby和PHP。

历史 
Doug Cutting在1999年编写了Lucene，他是一位資深的全文索引及檢索專家，曾經是V-Twin搜索引擎的主要開發者，後來在Excite擔任高級系統架構設計師，目前從事於一些互联网底層架構的研究。他貢獻出Lucene的目標是為各種中小型應用程式加入全文檢索功能。Lucene最初可以从SourceForge网站的主页下载，它于2001年9月加入Apache软件基金会的Jakarta开源Java产品家族，并于2005年2月成为独立的顶级Apache项目。Lucene这个名字是Doug Cutting妻子的中间名，也是她外祖母的名字。 

Lucene以前包含了许多子项目，例如 Lucene.NET、Mahout、Tika and Nutch。这三个现在已经成为了独立的顶级Apache项目。

2010年3月，Apache Solr搜索服务器作为Lucene子项目加入，合并了开发者社区。

4.0版于2012年10月12日发布。

2021年3月，Lucene更改了logo，Apache Solr再次成为顶级Apache项目，独立于 Lucene。

功能和常见用途 
虽然理论上Lucene适用于任何需要全文索引和搜索功能的应用程序，但其主要是因为在Internet搜索引擎和本地单站点搜索实现中的实用性而受到认可。

Lucene包含了基于编辑距离执行模糊搜索的功能。

Lucene也被用于实现推荐系统。例如，Lucene的'MoreLikeThis'类可以生成相似文档的推荐。在将“MoreLikeThis”基于向量的相似性方法与基于引用的文档相似性度量（例如共引和共引邻近度分析）进行比较时，Lucene的方法在推荐具有非常相似的结构特征和更窄相关性的文档上表现出色。相比之下，基于引用的文档相似性度量往往更适合推荐更广泛相关的文档。

基於Lucene的項目 
Lucene本身只是一个索引和搜索库，不包含爬取和HTML解析功能。但是，以下的项目扩展了Lucene的功能：

 Apache Nutch — 提供成熟可用的网络爬虫
 Apache Solr — 基于Lucene核心的高性能搜索服务器，提供JSON/Python/Ruby API
 Compass – Elasticsearch的前身
 CrateDB – 基于Lucene构建的开源分布式SQL数据库
 DocFetcher — 跨平台的本机文件搜索桌面程序
 Elasticsearch —企业搜索平台，目的是组织数据并使其易于获取
 Kinosearch – 用Perl和C语言实现的搜索引擎与Lucene的移植。Socialtext wiki和MojoMojo wiki均使用了这一搜索引擎。 它在人类代谢物组数据库（HMDB） 和毒素与毒素目标数据库(T3DB)中亦有应用。
 MongoDB Atlas Search – 基于MongoDB和Apache Lucene的云原生企业搜索应用程序
 OpenSearch – 基于Elasticsearch 7的开源企业级搜索服务器
 Swiftype — 基于Lucene的企业级搜索
 Lucene.NET — 提供给.Net平台用户的Lucene类库的封装
 Apache Lucy — 为动态语言提供全文搜索的能力，是Lucene Java 库的C接口
 Luke — Java编写的用户界面用于编辑Lucene的索引，此项目已停止开发

參見 
 Solr － 使用Lucene的企業搜索伺服器，亦由Apache軟件基金會所研發。

參考資料

外部連結 

 Lucene homepage 
 Article "Behind the Scenes of the SourceForge.net Search System" by Chris Conrad
 
 Simple Lucene Examples
 Apache Lucene popular APIs  in GitHub

Apache软件基金会
搜索
Java