目錄
Lucene
Lucene 是一個基於 Java 的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是爲你的應用程序提供索引和搜索功能。
如圖是應用程序與lucene之間的關係
使用過程大概如下:
- 索引流程:即採集數據–>構建文檔對象–>分析文檔(分詞)–>創建索引。
- 搜索流程:即用戶通過搜索界面–>創建查詢–>執行搜索,搜索器從索引庫搜索–>渲染搜索結果。
ElasticSearch
Elasticsearch是一個基於Apache Lucene™的開源搜索引擎。
Lucene只是一個庫。想要使用它,你必須使用Java來作爲開發語言並將其直接集成到你的應用中,更糟糕的是,Lucene非常複雜,你需要深入瞭解檢索的相關知識來理解它是如何工作的。
Elasticsearch也使用Java開發並使用Lucene作爲其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。
Lucene vs Elasticsearch
- Lucene是一個java信息檢索程序庫。您可以將其包含在項目中,並使用函數調用來參考其功能。
Lucene 是apache軟件基金會一個開放源代碼的全文檢索引擎工具包,是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。Lucene的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎建立起完整的全文檢索引擎(搜索引擎和檢索程序庫不完全等同)。
- Elasticsearch是基於JSON的,分佈式的,基於Lucene的Web服務。
Lucene是一套信息檢索工具包,並不包含搜索引擎系統,它包含了索引結構、讀寫索引工具、相關性工具、排序等功能,因此在使用Lucene時仍需要關注搜索引擎系統,例如數據獲取、解析、分詞等方面的東西。而elasticsearch都是基於該工具包做的一些封裝。