標籤:
大資料處理方面的 7 個開源搜尋引擎
大資料是一個包括一切的術語,指的是資料集很大很複雜,他們需要特別設計的硬體和軟體工具。資料集通常是 T 或者更大層級。這些資料集從各種各樣的來源建立,包括感應器,收集氣象資訊,公開可用的資訊,如雜誌、報紙、文章。還包括購買交易記錄、部落格、醫學記 錄、軍事偵察、視頻和映像檔案和大規模的電子商務等等。
要分析這些資料需要專門的軟硬體,本文介紹 7 個開源的搜尋引擎適合用於大資料處理:
1. Apache Lucene
Lucene 是apache軟體基金會一個開放原始碼的全文檢索索引引擎工具包,是一個全文檢索索引引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。 Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索索引的功能,或者是以此為基礎建立起完整的全文檢索索引引擎。
特性:
- 索引過程:
- 在現在流行的硬體平台上每個小時可處理超過 150GB 的資料
- 記憶體佔用小,只需 1MB 的堆記憶體
- 增量索引和批量索引速度一樣快
- 索引大小約為文本索引的 20-30% 大小
- 靜態索引修剪
- 搜尋演算法:
- 範圍搜尋 - 優先返回最佳結果
- 很多強大的查詢類型:短語查詢、萬用字元查詢、近似查詢、範圍查詢等
- 可單獨針對某個欄位查詢
- 可單獨根據某個欄位排序
- 多索引搜尋併合並搜尋結果
- 允許同步更新索引和搜尋
- 靈活的門面搜尋、高亮顯示、結果集的聯合和分組
- 快速,低記憶體佔用和容錯
- 可插入式排名模型,包括 VSM 和 Okapi MB25
- 可配置的儲存引擎
- 跨平台解決方案
- 100% 純 Java
- 其他語言提供索引相容的實現
2. Apache Solr
Apache Solr (讀音: SOLer) 是一個開源的搜尋伺服器。Solr 使用 Java 語言開發,主要基於 HTTP 和 Apache Lucene 實現。Apache Solr 中儲存的資源是以 Document 為對象進行儲存的。每個文檔由一系列的 Field 構成,每個 Field 表示資源的一個屬性。Solr 中的每個 Document 需要有能唯一標識其自身的屬性,預設情況下這個屬性的名字是 id,在 Schema 設定檔中使用:<uniqueKey>id</uniqueKey>
進行描述。
3. Elasticsearch
Elastic Search 是一個基於Lucene構建的開源,分布式,RESTful搜尋引擎。設計用於雲端運算中,能夠達到即時搜尋,穩定,可靠,快速,安裝使用方便。支援通過HTTP使用JSON進行資料索引。
4. Sphinx
Sphinx是一個基於SQL的全文檢索索引引擎,可以結合MySQL,PostgreSQL做全文檢索搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索索引。Sphinx特別為一些指令碼語言設計搜尋API介面,如PHP,Python,Perl,Ruby等,同時為MySQL也設計了一個儲存引擎外掛程式。
5. Xapian
Xapian是一個用C++編寫的全文檢索索引程式,他的作用類似於Java的lucene。儘管在Java世界lucene已經是標準的全文檢索索引程式,但是C/C++世界並沒有相應的工具,而Xapian則填補了這個缺憾。
6. Nutch
Nutch 是一個開源Java 實現的搜尋引擎。它提供了我們運行自己的搜尋引擎所需的全部工具。包括全文檢索搜尋和Web爬蟲。
儘管Web搜尋是漫遊Internet的基本要求, 但是現有web搜尋引擎的數目卻在下降. 並且這很有可能進一步演變成為一個公司壟斷了幾乎所有的web搜尋為其謀取商業利益.這顯然 不利於廣大Internet使用者.
Nutch為我們提供了這樣一個不同的選擇. 相對於那些商用的搜尋引擎, Nutch作為開放原始碼 搜尋引擎將會更加透明, 從而更值得大家信賴. 現在所有主要的搜尋引擎都採用私人的排序演算法, 而不會解釋為什麼一個網頁會排在一個特定的位置. 除此之外, 有的搜尋引擎依照網站所付的 費用, 而不是根據它們本身的價值進行排序. 與它們不同, Nucth沒有什麼需要隱瞞, 也沒有 動機去扭曲搜尋的結果. Nutch將盡自己最大的努力為使用者提供最好的搜尋結果.
Nutch 致力於讓每個人能很容易, 同時花費很少就可以配置世界一流的Web搜尋引擎. 為了完成這一宏偉的目標, Nutch必須能夠做到:
- 每個月取幾十億網頁
- 為這些網頁維護一個索引
- 對索引檔案進行每秒上千次的搜尋
- 提供高品質的搜尋結果
- 以最小的成本運作
7. LGTE
LGTE 是基於 Lucene 提供了擴充 Lucene API 用於整合很多服務,例如片段產生、查詢擴充等等,並提供了一組單元測試。
特性包括:
- 提供了簡單和高效的 Lucene API 的抽象層
- 在主題、時間和地理方面支援整合檢索和排序的依據
- 支援 Lucene 標準的檢索模型,提供更進階的機率檢索方法
- 支援 Rochio 查詢擴充
- 提供了用於 IR 模擬體驗的架構 (例如處理 CLEF/TREC 主題)
- 包含 trec_eval 工具的 Java 替換版
- 包含一個簡單的測試應用,用來搜尋 Braun Corpus 或 Cranfield Corpus
- TREC/CLEF 模擬架構 - 集合索引的工具,運行主題搜尋並使用 treckeval 格式輸出結果
- 使用不同檔案夾提供隔離欄位
- 通過外鍵欄位提供層次化的索引
- 提供用於使用 Yahoo PlaceMaker 解析文檔的類
大資料處理方面的 7 個開源搜尋引擎