【搜索引擎基础知识3】搜索引擎相关开源项目及网站
部分內容轉自:http://blog.csdn.net/hguisu/article/details/8024799
一、 開源項目
apache lucene是apache下一個著名的開源搜索引擎內核,基于Java技術,處理索引,拼寫檢查,點擊高亮和其他分析,分詞等技術。
nutch和solr原來都是lucene下的子項目。但后來nutch獨立成為獨立項目。nutch是2004年由俄勒岡州立大學開源實驗室模仿google搜索引擎創立的開源搜索引擎,后歸于apache旗下。nutch主要完成抓取,提取內容等工作。
solr則是基于lucene的搜索界面。提供XML/HTTP 和 JSON/Python/Ruby API,提供搜索入口,點擊高亮,緩存,備份和管理界面。
hadoop原來是nutch下的分布式任務子項目,現在也成為apache下的頂級項目。nutch可以利用hadoop進行分布式多任務抓取和分析存儲工作。
所以,lucene,nutch,solr,hadoop一起工作,是能完成一個中型的搜索引擎工作的。
前面有一篇《apache 搜索引擎solr試用》,詳細描述了單獨的solr實現搜索界面的示例。
下面的部分,基于nutch,完成網頁的抓取,并通過solr完成索引和搜索,實現真正的完整的搜索引擎建立流程。
1.Lucene全文檢索系統
? ? ? http://lucene.apache.org和 http://www.lucene.com.cn/
? ? ? Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。Lucene的原作者是Doug Cutting,他是一位資深全文索引/檢索專家,曾經是V-Twin搜索引擎的主要開發者,后在Excite擔任高級系統架構設計師,目前從事于一些Internet底層架構的研究。早先發布在作者自己的,他貢獻出Lucene的目標是為各種中小型應用程式加入全文檢索功能。
2. ?Nutch系統
? ? ?http://www.nutch.org和http://www.nutchchina.com
? ? ?Nutch是個完整的開放源代碼的搜索引擎,是個完備的應用程序。內部實現以Lucence為基礎實現搜索引擎應用.
利用Nutch經過簡單設置就可以建立自己的內部網的搜索引擎,也可以針對互聯網建立搜索引擎,還可以與數據庫結合檢索索引。
3、Solr
導言
說起Apache Lucene,可以說無人不知,無人不曉,但是說道Apache Solr,恐怕知道的不多。看看Apache Solr的說明:
Solr是一個基于Lucene java庫的企業級搜索服務器,包含XML/HTTP,JSON API, 高亮查詢結果,faceted search(不知道該如何翻譯,片段式搜索),緩存,復制還有一個WEB管理界面。Solr運行在Servlet容器中。所以Solr和Lucene的本質區別有以下三點:搜索服務器,企業級和管理。Lucene本質上是搜索庫,不是獨立的應用程序,而Solr是。Lucene專注于搜索底層的建設,而Solr專注于企業應用。Lucene不負責支撐搜索服務所必須的管理,而Solr負責。所以說,一句話概括Solr:?Solr是Lucene面向企業搜索應用的擴展。
在本篇文章中,我們先看看Solr向我們承諾了什么,或者說Solr宣稱的特性們。
無廢話Solr
Solr是一個擁有象WebService一樣接口的獨立運行的搜索服務器。你將能夠通過HTTP協議以XML格式將文檔放入搜索服務器(這個過程叫做索引),你能夠通過HTTP協議的GET來查詢搜索服務器并且得到XML格式的結果。Solr的特性包括:- 高級的全文搜索功能
- 專為高通量的網絡流量進行的優化
- 基于開放接口(XML和HTTP)的標準
- 綜合的HTML管理界面
- 可伸縮性-能夠有效地復制到另外一個Solr搜索服務器
- 使用XML配置達到靈活性和適配性
- 可擴展的插件體系?
Solr使用Lucene并且擴展了它!
- 一個真正的擁有動態域(Dynamic Field)和唯一鍵(Unique Key)的數據模式(Data Schema)
- 對Lucene查詢語言的強大擴展!
- 支持對結果進行動態的分組和過濾
- 高級的,可配置的文本分析
- 高度可配置和可擴展的緩存機制
- 性能優化
- 支持通過XML進行外部配置
- 擁有一個管理界面
- 可監控的日志
- 支持高速增量式更新(Fast incremental Updates)和快照發布(Snapshot Distribution)
Schema(模式)
- 定義域類型和文檔的域
- 能夠驅動智能處理
- 聲明式的Lucene分析器規范
- 動態域能夠隨時增加域
- 拷貝域功能允許對一個域進行多種方式的索引,或者將多個域聯合成一個可搜索的域
- 顯式類型能夠減少對域類型的猜測
- 能夠使用外部的基于文件的終止詞列表,同義詞列表和保護詞列表的配置
查詢
- 擁有可配置響應格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
- 高亮的上下文搜索結果
- 基于域值和顯式查詢的片段式搜索(Faceted Search)
- 對查詢語言增加了排序規范
- 常量的打分范圍(Constant scoring range)和前綴式查詢-沒有idf,coord,或者lengthNorm因子,對查詢匹配的詞沒有數量限制
- 函數查詢(Function Query)-通過關于一個域的數值或順序的函數對打分進行影響
- 性能優化
核心
- 可插拔的查詢句柄(Query Handler)和可擴展的XML數據格式
- 使用唯一鍵的域能夠增強文檔唯一性
- 能夠高效地進行批量更新和刪除
- 用戶可配置的文檔索引變化觸發器(命令)
- 并發控制的搜索器
- 能夠正確處理數字類型,從而能夠進行排序和范圍搜索
- 能夠控制缺失排序域的文檔
- 支持搜索結果的動態分組
緩存
- 可配置的查詢結果,過濾器,和文檔緩存實例
- 可插拔的緩存實現
- 后臺緩存熱啟:當一個新的搜索器被打開時,可配置的搜索將它熱啟,避免第一個結果慢下來,當熱啟時,當前搜索器處理目前的請求(???)。
- 后臺自動熱啟:當前搜索器緩存中最常訪問的項目在新的搜索器中再次生成,能夠在索引器和搜索器變化的時候高速緩存常查詢的結果
- 快速和小的過濾器實現
- 支持自動熱啟的用戶級別的緩存
復制
- 能夠將使用rsync傳輸時改變的索引部分有效的發布
- 使用拉策略(Pull Strategy)來簡化增加搜索器
- 可配置的發布間隔能夠允許對時間線和緩存使用進行權衡選擇
管理接口
- 能夠對緩存使用,更新和查詢進行綜合統計
- 文本分析調試器,能夠顯示每個分析器每個階段的結果
- 基于WEB的查詢和調試輸出:解析查詢輸出,Lucene的explain方法細節,能夠解釋為何某個文檔打分低,被排除在結果中等等
3、Heritrix項目
3.Compass
? ? ? http://wwww.compassframework.org/
? ? ? Compass是在Lucence上實現的開源搜索引擎架構,提供更加簡潔的搜索引擎API. 增加了索引事務處理的支持,能夠更方便地與數據庫等食物處理應用進行整合。更新時更加簡單、更加高效,無需刪除原文檔。資源與搜索引擎之間采用映射機制,Compass還能與Hibernate 、Spring架構進行集成
4.Larbin系統
? ? ? http://larbin.sourceforge.net/
? ? larbin是一種開源的網絡爬蟲/網絡蜘蛛,由法國的年輕人Sébastien Ailleret獨立開發,用c++語言實現。larbin目的是能夠跟蹤頁面的url進行擴展的抓取,最后為搜索引擎提供廣泛的數據來源。 Larbin只是一個爬蟲,也就是說larbin只抓取網頁,至于如何parse的事情則由用戶自己完成。另外,如何存儲到數據庫以及建立索引的事情 larbin也不提供。
latbin最初的設計也是依據設計簡單但是高度可配置性的原則,因此我們可以看到,一個簡單的larbin的爬蟲可以每天獲取500萬的網頁,實在是非常高效。
利用larbin,我們可以輕易的獲取/確定單個網站的所有聯結,甚至可以鏡像一個網站;也可以用它建立url 列表群,例如針對所有的網頁進行 url retrive后,進行xml的聯結的獲取。或者是 mp3,或者定制larbin,可以作為搜索引擎的信息的來源。
?
5. Yioop! PHP 搜索引擎
? ? ? ?http://www.seekquarry.com/
? ? ? ?Yioop! 是一個 PHP 的搜索引擎,可用于 Web 的一般用途搜索,或者可提供URL搜索以及各種文檔的索引搜索,包括:HTML, PDF, DOC, PPT, RTF, RSS, XML, SVG, PNG, JPG, BMP, GIF, 以及 sitemaps.
二、 研究網站
1,Google 黑板報 http://www.google.com.hk/ggblog/googlechinablog/
2,searchenginewatch.com大站。
3、nutch和lucene的區別
想做一個搜索引擎,最近瀏覽了許多社區,發現Lucene和Nutch用的很多,而這兩個我總感覺難以區分概念,于是在查了些資料。下面是Lucene和Nutch創始人Doug Cutting 的訪談摘錄:
?Lucene其實是一個提供全文文本搜索的函數庫,它不是一個應用軟件。它提供很多API函數讓你可以運用到各種實際應用程序中。現在,它已經成為Apache的一個項目并被廣泛應用著。這里列出一些已經使用Lucene的系統。
Nutch是一個建立在Lucene核心之上的Web搜索的實現,它是一個真正的應用程序。也就是說,你可以直接下載下來拿過來用。它在Lucene的基礎上加了網絡爬蟲和一些和Web相關的東東。其目的就是想從一個簡單的站內索引和搜索推廣到全球網絡的搜索上,就像Google和Yahoo一樣。當然,和那些巨人競爭,你得動一些腦筋,想一些辦法。我們已經測試過100M的網頁,并且它的設計用在超過1B的網頁上應該沒有問題。當然,讓它運行在一臺機器上,搜索一些服務器,也運行的很好。
? ?總的來說,我認為LUCENE會應用在本地服務器的網站內部搜索,而Nutch則擴展到整個網絡、Internet的檢索。當然LUCENE加上爬蟲程序等就會成為Nutch,這樣理解應該沒錯吧。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rokii/archive/2008/03/01/2137450.aspx
簡單的說: ?
z ?Lucene 不是完整的應用程序,而是一個用于實現全文檢索的軟件庫。?
z ?Nutch ?是一個應用程序,可以以 Lucene 為基礎實現搜索引擎應用。?
Lucene 為 Nutch 提供了文本索引和搜索的 API。一個常見的問題是;我應
該使用 Lucene 還是Nutch?最簡單的回答是:如果你不需要抓取數據的話,應該
使用Lucene。常見的應用場合是:你有數據源,需要為這些數據提供一個搜索頁
面。在這種情況下,最好的方式是直接從數據庫中取出數據并用 Lucene API 建立
索引。
總結
以上是生活随笔為你收集整理的【搜索引擎基础知识3】搜索引擎相关开源项目及网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HtmlParser基础教程
- 下一篇: 【搜索引擎Jediael开发笔记1】搜索