Nutch距離乙個商業應用的搜尋引擎還有多遠

2021-06-05 18:49:34 字數 2740 閱讀 1953

分類: 我的體驗

lucene/nutch

搜尋引擎

2007-11-05 14:58

1623人閱讀收藏 

舉報參考:

了解nutch的人基本上對這個開源的系統都是比較欣賞的,起碼在國內是這樣的,也很有多搜尋**是基於這個系統修改過來的,不過要做得好,做得真正是乙個商業化的搜尋,這個修改就不是一朝一夕的事情,也不是修修剪剪那麼簡單了。

作為乙個通用的全網級別的搜尋引擎架構,nutch(lucene)確實為廣大人民群眾提供了一塊大大的蛋糕,為進入搜尋這個行業大大降低了門檻。那麼它距商業的搜尋到底有多遠呢?以我的個人觀點來談一下。

一、總體功能

乙個專業的網路搜尋引擎至少包含3部分即抓取、處理和搜尋。下面是它們的一般功能:

處理:處理(分類、資訊抽取、資料探勘、classify、information extraction、data mining等)程式對抓回來的頁面進行分析,比如,對**的內容進行分類、對新聞頁面的新聞資訊進行提取、頁面模版生成、對各個**之間的關係進行計算等等。

搜尋:搜尋(information retrieve)程式負責把文件填充到資料庫,然後根據查詢字串到資料庫中尋找最相關的文件展現給使用者。

二、資訊抓取

網路資訊抓取包含了見面抓取、文字檔案抓取和其它檔案地抓取。普通的資訊抓取利用基本的html頁面分析器(htmlparser、neckohtml、 jtidy等)來解析頁面,得到其中的資訊。基本上兩點,乙個是抓取,乙個是分析。抓取這一步要處理身份論證、要支援多種協議等等的,nutch在這裡默 認的外掛程式使用的是nekohtml,效果還可以。但是nutch對html分析的結果的文字是把頁面裡所有的文字都合在一起(其中有乙個開關來控制內層錨文字是否加上)作為總文字輸出,所以這樣頁面上所有的噪音都沒有去除。另乙個是分析,分析乙個html,最強的要數ie、firefox等瀏覽器了,在這一步上,nutch預設的htmlparser的處理能力是不可同日而語的。現在ajax盛行,對於js的處理也是乙個重大的問題,現在nutch對js是視而不見的。

三、資訊處理

對於資訊的處理是nutch最薄弱的環節了,同時也是這個行業裡的「寶地」,勝敗決定就在這裡。這裡包括分類、資訊抽取、資料探勘、classify、information extraction、data mining等等,在預設的nutch元件裡有cluster這個包,是用來為搜尋結果進行聚類用的

,還有ontology

(本體),是人工智慧範疇內的概念

。nutch為這方面準備了最最基本的介面,其它的就得自己搞定了,比如機器學習(ml)、自然語言處理(nlp)、資料分析(da)。nutch預設的聚類是

用開源carrot2

的字尾樹演算法做web文字聚類。而ontology研究熱點的出現與semantic web的提出和發展直接相關,借助ontology中的推理規則,使應用系統具有一定的推理能力。預設的nutch也帶了乙個簡單的ontology的應用系統--hp的jena。但是對於乙個商業應用來說這些僅僅是乙個模具性質的。

四、搜尋

nutch其實從功能上來講是由爬蟲和搜尋兩大部分組成的,搜尋是lucene來挑樑的。所以這部分的侷限其實就是lucene的侷限了。lucene也 可能從功能上分為兩大部分,乙個是索引,乙個是查詢。對於這部分的研究已經很久了,就是把使用者最想要的文件返回給使用者,對於搜尋引擎而言,速度是非常重要 的。

索引,專業點說,包含

2種:前向索引和反向索引(倒排索引,

inverted index

)。前者表示的是某個文件裡面的所有詞語,後者表示的是包含某個詞語的所有文件。對應到

lucene

上面,它的前向索引可以認為是

term vectors

(詞語向量)相關檔案,包含

.tvx

、.tvd

和.tvf這3

lucene

上就是index

(索引)。

lucene

把索引劃分成乙個乙個的

segment

(塊,其實是乙個小索引),直觀的說,當有一批新資料到達的時候,我們一般給其構建成乙個新的

segment

,這是因為修改原來的

segment

的代價很高(並不是說一定很高,只是

lucene

採用的檔案結構無法簡單的加入新的文件)。當乙個

index

包含的segment

太多的時候,查詢效能就很差了(因為一次查詢需要查詢多個

segment

),需要進行

segment

的合併。在搜尋方面nutch對lucene作了外部的處理,一是可以進行分布式搜尋,每個節點只返回最高分值的結果,最近再合併;另一方面是對查詢進行緩衝,不過只有一級緩衝--lru(

nutch的cache策略及cache策略研究

)。五、結論

僅僅從搜尋引擎的構架來看,lucene(nutch)缺失的一環是資訊的處理。資訊的處理恰恰是整個搜尋引擎中最核心的技術。所以說對於現在這個行業化、垂直化的搜尋時代,

nutch 的先天不足就已經是致命的了,但是這並不是不可挽回的,nutch的外掛程式式架構,開放的系統邏輯等等特點,已經為開發者開啟了窗戶。nutch比較通用的 處理邏輯,加上靈活的外掛程式式架構,給我們定製它插上了翅膀。但是它也僅僅是乙個框架,裡面的任何乙個細節都會讓你頭痛不已(比如ml,nlp)!所以真正 的難點也就是這些讓人頭痛的地方。

關於 Nutch 的乙個問題 中文亂碼

很多朋友都遇到 nutch 0.6 輸入中文會出現亂碼的問題。這個問題其實和 nutch 關係不大,主要原因是使用 tomcat 5.0 的問題。解決辦法是修改 tomcat 的 server.xml 檔案的 connnector 其中 uriencoding utf 8 usebodyencodi...

深搜的乙個性質

我們將每個節點的起始時間和結束時間對映到乙個時間軸上,正如圖二所示。括號引理 從a點的時間跨度範圍來看,如果我們經過深搜後能夠找到圖二所示的一棵樹 藍線和紅線所包圍的那棵 那麼在這棵樹中,任何乙個祖先的時間跨度範圍都會完完全全的包含其後代的時間跨度範圍 反之,任何乙個後代的時間跨度範圍都會完完全全的...

深搜的乙個參考模板

深搜有乙個基本的模板 當然我在深搜題解上,我都打了這個模板的 int search int t else 注意事項 1.第乙個if是符合輸出解的條件,第二個if是符合進一步搜尋的條件 2.下一步搜尋時,不是使用return search t 1 直接search t 1 新手可能會注意不到這個關鍵的...