初識Lucene
一般來說艘包,在學(xué)習(xí)一樣?xùn)|西的時候统倒,總是遵循一定的過程:是什么寨典、為什么、怎么做房匆。
作為Lucene的簡介耸成,本文介紹Lucene是什么、為什么使用Lucene以及都有誰在使用Lucene這三個部分浴鸿。
是什么
Lucene 是apache軟件基金會一個開放源代碼的全文檢索引擎工具包井氢,是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎岳链,部分文本分析引擎花竞。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能宠页,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎左胞。
Lucene最初是由Doug Cutting所撰寫的寇仓,是一位資深全文索引/檢索專家举户,曾經(jīng)是V-Twin搜索引擎的主要開發(fā)者,后來在Excite擔(dān)任高級系統(tǒng)架構(gòu)設(shè)計師遍烦,目前從事 于一些INTERNET底層架構(gòu)的研究俭嘁。他貢獻(xiàn)出Lucene的目標(biāo)是為各種中小型應(yīng)用程式加入全文檢索功能。
以上摘自開源中國對Lucene的介紹
Lucene是一款高性能服猪、可擴(kuò)展的信息檢索(IR供填,Information Retrieval)工具庫,它實現(xiàn)了索引罢猪、分詞近她、檢索、評分等搜索引擎的核心功能膳帕。具有如下特點:
高性能的索引:性能方面可以參照官方提供的基準(zhǔn)測試粘捎。
豐富的搜索:Lucene提供了精確搜索薇缅、短語搜索、通配符搜索等功能攒磨,并支持高亮泳桦、聚合等特性。
跨平臺:Lucene最初由Java編寫娩缰,所以具有跨平臺的特點灸撰。目前也有其他語言的實現(xiàn),包括C拼坎、C++浮毯、.NET、Ruby等泰鸡。
為什么
在Lucene之前亲轨,數(shù)據(jù)存儲和搜索的功能要依賴傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。
以MySQL為例鸟顺,當(dāng)單表數(shù)據(jù)量達(dá)到千萬級別時惦蚊,性能會出現(xiàn)斷崖式的下降。并且讯嫂,MySQL在應(yīng)對全文檢索蹦锋、拼寫檢查、相關(guān)推薦等現(xiàn)代搜索引擎需求時欧芽,就顯得力不從心:不僅僅性能比較低莉掂,而且實現(xiàn)起來需要具備較高的專業(yè)性,復(fù)雜度較高千扔。
而Lucene通過簡單易用的API憎妙,向上層應(yīng)用屏蔽了復(fù)雜的索引和搜索實現(xiàn)。
誰在用
前面說過曲楚,Lucene只是一個全文檢索引擎工具包厘唾,并不是一個完整的搜索應(yīng)用程序,使用成本稍高龙誊。所以有了Elasticsearch 和Solr等基于Lucene的抚垃、應(yīng)用更廣泛的、開箱即用的搜索引擎應(yīng)用趟大。要說Lucene的使用鹤树,就離不開ElasticSearch和Solr。
如果你想在你的應(yīng)用程序中嵌入搜索功能逊朽,可以放心地使用Lucene或者ElasticSearch罕伯、Solr,這些應(yīng)用已經(jīng)被廣泛地使用和證明:
開源中國:開源中國使用Lucene實現(xiàn)全文檢索叽讳。更多:Lucene使用案例
GitHub:GitHub使用ElasticSearch為代碼倉庫提供全文檢索追他。更多:ElasticSearch使用案例