Lucene 生日快乐

庆祝 Apache Lucene 20 周年

Apache Lucene——Elasticsearch 的支柱——证明了当开源软件受到蓬勃发展的社区的培育时,它可以蓬勃发展并成长为在全球范围内为数字体验提供动力的技术。Elastic 通过一个集体的时间轴,突出有趣的事实和关键里程碑,来庆祝与 Lucene 代码和社区的联系和集成。

2000

一切都从 Java 开始

当 Doug Cutting 决定学习 Java 时,他通过创建一个新的搜索索引器项目来磨练自己的技能。这一努力使他编写了 Lucene 的第一个版本——并在 2000 年 4 月通过 SourceForge 以免费和开源软件的形式提供。Lucene 是 Doug 的第五个搜索引擎,他之前在 Xerox PARC 编写了两个,在 Apple 编写了一个,在 Excite 编写了第四个。

Doug Cutting
icon-fun-facts-speakerphone-color.svg

趣闻

名字里有什么?Lucene 这个名字是 Doug 妻子的中间名,也是她祖母的名字。

每个人都有一个起源故事

每个人都有自己独特的关于如何开始使用 Lucene 的故事。您的故事将如何开始?

Video thumbnail

Lucene 加入 Apache

9 月,Lucene 加入了 Apache Jakarta 项目。Jakarta 是一系列开源 Java 项目,包括 Apache Tomcat 和 Apache Struts。

Illustration
icon-milestone-flag-color.svg

里程碑

Lucene 1.2 成为 Apache 许可证下的第一个 Lucene 版本,标志着它脱离了 LGPL 许可。

致力于开源

2002 年,Lucene 获得了来自 13 位独特作者的近 400 次提交——而且此后一直在增长。观察最初几年的提交,看看它们是如何随着时间推移而增长的。

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 1.3 通过 PerFieldAnalyzerWrapper 引入了一些早期的灵活性,允许字段使用不同的标记化方法。

Shay Banon 发布了 Compass——一个构建在 Lucene 之上的开源项目——旨在简化将搜索集成到任何 Java 应用程序中。Compass 将作为 Elasticsearch 的前身。

Illustration
icon-milestone-flag-color.svg

里程碑

Lucene 1.4 引入了命中排序,允许给定查询的结果按任何索引字段排序。

为(代码)作者阅读

Lucene in Action 首次出版。这本 Lucene 指南仍然是该项目最畅销的技术手册。

Mike McCandless
icon-fun-facts-speakerphone-color.svg

趣闻

2005 年,有来自 11 位独特作者的 484 次提交。

致力于解决问题,无论大小

可视化 2005-2009 年的 Lucene 提交

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 1.9 引入了 DateTools,允许用户格式化日期以提高可读性,并处理 1970 年之前的日期。

icon-milestone-flag-color.svg

里程碑

Lucene 2.0 与 1.9 相似,除了删除已弃用的 API。有些人将该项目的寿命归因于这种类型的维护。

icon-fun-facts-speakerphone-color.svg

趣闻

在 Doug 的帮助下,Shay 提交了他对 Lucene 代码库的第一个贡献 (LUCENE-511)。Elastic 的联合创始人 Simon Willnauer 也与 Doug 合作,满足了在 Lucene 之上实现 GData 服务器的请求 (LUCENE-578)。

查看 Shay 和 Simon 的所有工单
icon-milestone-flag-color.svg

里程碑

Lucene 2.1 更新了 QueryParser,允许以 Unicode 转义形式添加 Unicode 字符。\u1F973 \u1F973 \u1F973

icon-milestone-flag-color.svg

里程碑

Lucene 2.2 包括一些影响很大的小型优化。两个缓冲区大小的增加使写入性能提高了 10-18%。

icon-fun-facts-speakerphone-color.svg

趣闻

Doug 的第一条推文宣布了一项激动人心的新速度功能。

准备好

庆祝社区

对于一个开源项目来说,20 年是很长的时间。毫无疑问,Lucene 的长寿证明了其社区的强大和多样性。

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 2.3 改进了 IndexWriter 如何利用 RAM 来缓冲文档的方式,从而使索引速度提高了 2-8 倍。

icon-fun-facts-speakerphone-color.svg

趣闻

社区最初的邮件列表至今仍然活跃。

icon-milestone-flag-color.svg

里程碑

Lucene 2.9 更改了其 API 以反映其索引的段式结构,通过这种新的调整提高了速度。

icon-milestone-flag-color.svg

里程碑

Lucene 3.0 是第一个在运行时需要 Java 5 的版本,它利用了新的 JVM 功能,如泛型、枚举和可变参数。

icon-fun-facts-speakerphone-color.svg

趣闻

Elastic 的联合创始人 Uri Boness 创立了第一个荷兰 Lucene 用户组。

连接代码

Lucene 和 Solr 仓库合并了。虽然共享同一个仓库,但 Lucene 仍然可以单独下载和使用。

Illustration
icon-fun-facts-speakerphone-color.svg

趣闻

Elasticsearch 0.1.0 于 2 月 7 日发布!这个开源的、分布式的、RESTful 的搜索引擎是构建在 Lucene 之上的。

icon-fun-facts-speakerphone-color.svg

趣闻

Simon 创办了柏林 Buzzwords 大会,这是一个专注于致力于大数据管理的开源软件项目的会议。

致力于建立强大的社区

可视化 2010-2014 年 Lucene 的提交

Video thumbnail
icon-fun-facts-speakerphone-color.svg

趣闻

Twitter 实施了 Lucene 的一个修补版本用于实时搜索。

icon-milestone-flag-color.svg

里程碑

Lucene 3.4 引入了块连接,允许进行高效的 1-N 连接。

4.0?4.哦,哇!

Lucene 4.0 充满了重要的新功能。通过 Codecs API 改进的索引灵活性,增加了相似性模型(BM25、DFR 等),以及 doc values 的引入,将 Lucene 提升到了严肃分析的领域。

Illustration
icon-fun-facts-speakerphone-color.svg

趣闻

2 月 9 日,在第一个 Elasticsearch 提交几乎两年后,Steven Schuurman、Uri Boness 以及 Lucene 贡献者 Simon Willnauer 和 Shay Banon 创立了 Elastic。嘿,那是我们!

我们的故事
icon-milestone-flag-color.svg

里程碑

Lucene 4.3 添加了一个成本 API 来近似查询匹配计数。这通过首先运行廉价查询来显著提高速度。

icon-fun-facts-speakerphone-color.svg

趣闻

搜索建议在今天已经很常见,但这并不意味着它们很容易。了解 Lucene 最初如何处理这个复杂的任务。

持续致力于 Lucene

Apache Lucene 是 Elasticsearch 的核心,Elastic 一直将向核心 Lucene 做出贡献作为优先事项。事实上,核心提交者从第一天起就在 Elastic 团队中。

Illustration
icon-milestone-flag-color.svg

里程碑

Lucene 4.8 实施了一种通用格式,其中包括所有索引文件的校验和,从而可以更好地检测硬件错误。

可视化 2015-2019 年 Lucene 的提交

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 5.0 的主要动机是删除对 3.x 索引的支持。管理技术债务并不光彩,但很重要。

icon-milestone-flag-color.svg

里程碑

Lucene 5.1 为短语查询添加了两阶段交集,通过将近似和确认分为两个步骤来提高速度。

icon-fun-facts-speakerphone-color.svg

趣闻

Elastic 的第一个本周 Elasticsearch 和 Apache Lucene 博客于 3 月 25 日发布,该系列一直持续到 2020 年。

看一看

分支拓展

随着用于多维搜索的 BKD 树数据结构的引入,Lucene 不再仅仅是一个全文搜索引擎,而是一个可以搜索任何东西的搜索引擎。这为我们目前在地理空间搜索、使用动态特征进行评分等领域看到的发展打开了大门。

Illustration
icon-milestone-flag-color.svg

里程碑

Lucene 6.0 添加了对多维点(BKD 树)索引的支持,并将 BM25 设置为默认的相似性模型(不是 TF/IDF)。

icon-fun-facts-speakerphone-color.svg

趣闻

Lucene 从 Subversion 仓库迁移到 Git,允许用户更准确地控制版本和发布。

现在特色是...

经过 20 年的社区开发,称 Lucene “功能丰富” 是一种保守的说法。有如此多的功能可供选择,每个人都有一些最爱。

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 6.5 引入了逻辑来以最有效的方式自动运行范围查询,从而大大提高了性能。

icon-milestone-flag-color.svg

里程碑

Lucene 7.0 将 doc value API 从随机访问更新为迭代访问,通过稀疏数据(几乎为空的字段)优化性能。

展望未来

在 Lucene 的可能性方面,没有尽头。了解未来可能的发展方向,以及人们对什么感到兴奋。

Video thumbnail
icon-milestone-flag-color.svg

里程碑

Lucene 7.6 允许 BKD 树索引其维度的子集,有效地将它们视为 R 树(地理中的标准结构)。

魔术 WAND

Lucene 8.0 实现了 Block-Max WAND 算法,通过将低分结果排除在集合之外,从而极大地提高了大型文档集合的搜索结果速度。

Illustration

Lucene 迎来 20 周年!

对于多年来为 Lucene 做出贡献的人们,我们所有享受这个令人难以置信的开源项目的人都真诚地表示“感谢”。我们期待着更多年的搜索创新,并很高兴看到还有谁加入该项目。

Illustration
icon-fun-facts-speakerphone-color.svg

趣闻

Lucene 社区成员合作撰写了一篇学术论文,重点介绍了技术进步与学术界的交叉点。

icon-fun-facts-speakerphone-color.svg

趣闻

担心向 Lucene 贡献你的第一个拉取请求?别担心!尊重和善良是这个蓬勃发展的 OSS 社区的核心。

2050

01001100!

人工智能机器人以行星际庆祝活动纪念 Lucene 的 50 岁生日。人工智能生成的诗歌赞美 Lucene 新的跨维度索引功能充斥了外部网络,导致所有宇宙的服务器崩溃,并使任何过时的人类生产力努力变得毫无用处。

Illustration