初识Lucene
一般来说,在学习一样东西的时候,总是遵循一定的过程:是什么、为什么、怎么做。
作为Lucene的简介,本文介绍Lucene是什么、为什么使用Lucene以及都有谁在使用Lucene这三个部分。
是什么
Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene最初是由Doug Cutting所撰写的,是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎的主要开发者,后来在Excite担任高级系统架构设计师,目前从事 于一些INTERNET底层架构的研究。他贡献出Lucene的目标是为各种中小型应用程式加入全文检索功能。
以上摘自开源中国对Lucene的介绍
Lucene是一款高性能、可扩展的信息检索(IR,Information Retrieval)工具库,它实现了索引、分词、检索、评分等搜索引擎的核心功能。具有如下特点:
高性能的索引:性能方面可以参照官方提供的基准测试。
丰富的搜索:Lucene提供了精确搜索、短语搜索、通配符搜索等功能,并支持高亮、聚合等特性。
跨平台:Lucene最初由Java编写,所以具有跨平台的特点。目前也有其他语言的实现,包括C、C++、.NET、Ruby等。
为什么
在Lucene之前,数据存储和搜索的功能要依赖传统的关系型数据库。
以MySQL为例,当单表数据量达到千万级别时,性能会出现断崖式的下降。并且,MySQL在应对全文检索、拼写检查、相关推荐等现代搜索引擎需求时,就显得力不从心:不仅仅性能比较低,而且实现起来需要具备较高的专业性,复杂度较高。
而Lucene通过简单易用的API,向上层应用屏蔽了复杂的索引和搜索实现。
谁在用
前面说过,Lucene只是一个全文检索引擎工具包,并不是一个完整的搜索应用程序,使用成本稍高。所以有了Elasticsearch 和Solr等基于Lucene的、应用更广泛的、开箱即用的搜索引擎应用。要说Lucene的使用,就离不开ElasticSearch和Solr。
如果你想在你的应用程序中嵌入搜索功能,可以放心地使用Lucene或者ElasticSearch、Solr,这些应用已经被广泛地使用和证明:
开源中国:开源中国使用Lucene实现全文检索。更多:Lucene使用案例
GitHub:GitHub使用ElasticSearch为代码仓库提供全文检索。更多:ElasticSearch使用案例