專家訪談 搜尋開源力量 Lucene技術前景

2021-04-22 10:19:00 字數 2910 閱讀 5775

專家訪談:

搜尋開源力量:lucene技術前景

吳眾欣:web中什麼資訊最多?web的非結構化的資訊最多。這些資訊需要整合,而search engine(se)正是應運而生。web新興的事物:結構化blog,feedmesh,

xmtp

(extensible markup transport protocol),xml序列化/反序列化,瀏覽器應用範圍擴大,massive data。不用多談,如果沒有se的出現,大家還不知道如何找這些資訊源,se現在是web的基礎設施,但請注意,它不是那種根本型的改變。瀏覽器與標記語言出現才是根本型的改變。se是促進型的技術,它對新興的事務很敏感,所以它必須獨占鰲頭,如果把網路儲存的資訊比做圖書館,管理員的角色很重要,我在交大找不到書,就得找管理員,這裡得感謝他們一下。

吳眾欣:開源的專案就像是百寶箱,可以用,可以學,用來開發就不提了,能學什麼?框架,程式設計技巧,演算法。對於開源的搜尋引擎專案,我要著重說一說「演算法」。《**之美》的序言中提到:演算法+資料結構=程式,概念雖然有些老,但是年年企業招聘還是願意考一些演算法,《計算機程式設計藝術》的

高德納先生可以說用畢生的精力來導引大家,讓大家覺得耍小聰明的人(自認為演算法,臨時拍拍腦袋想想就得),

支援侯先 生的人(不懂演算法,也能程式設計),總是達不到程式設計的標準,這讓人想想都要暗笑,「玄之又玄,眾妙之門」。事物展示到我們的面前分為物情與物理,物情通過使用 即可了解,想要由表及裡,物理則需要挖掘「內幕」,「深入淺出」,達到「自己編寫」的目的。這方面對於開源搜尋引擎專案而言,更為突出。

吳眾欣:在lucene**的poweredby鏈結中給出了使用lucene的站點,按照字母排序,其中eclipse用它來做文件的檢索,psnc用它來做數字圖書館的架構,usajobs inc. job search是找工作的搜尋引擎,其他的桌面搜尋開發站點,琳琳總總不下幾十個。如果我們再擴大一下,從使用lucene的nutch演化出的hadoop專案,使用這個類gfs架構的還有巨人型站點yahoo!等。所以我推薦大家也看看lucene的衍生物,挺有意思,基本最近時髦的技術,比如mapreduce,bigtable等,都能在那裡找到。

吳眾欣:lucene的技術特點這裡不多談,只談其中一點,就是lucene的查詢過程。在lucene**上的benchmark大多談的是標引過程,索引結構各個書籍也都有談到,雖然,標引與查詢是逆過程,但是查詢也有自己的特色。最明顯的就是在硬碟,記憶體,cpu三者均衡(balancing)的考慮。我們都知道壓縮體在解壓時耗費的是cpu,但是壓縮可以節省硬碟的儲存空間,i/o訪問的時間減少了,這是均衡cpu處理與硬碟訪問的時間。lucene因為支援範圍查詢就為字典程式作了快表,沒有用hash,快表在查詢時需要提前載入到記憶體中,就好象是汽車的引擎,冬天要預熱一樣。加入到記憶體中的快表與你字典檔案的大小有關,與產生快表的單詞跨度也有關,lucene在 字典檔案中每隔乙個跨度就在快表裡記錄乙個單詞。跨度太小,記憶體占用太多,跨度太大,遍歷硬碟上跨度內的單詞也需要花費時間,這就是硬碟訪問與記憶體訪問的 均衡。當遇到多個查詢詞的情況時,還要考慮每個單詞的部分評分保留在記憶體的情況,不到最後乙個查詢詞出現,就得不到最後評分,要是能限定一下記憶體,先在內 存中儲存前1024個文件的部分評分,cpu先計算1-1024文件的總分,然後再計算n/1024次,其中n是文集中文件的個數,這樣遇到前面的查詢詞是高頻詞,也不會因為儲存其部分評分而使記憶體耗費過大,這就是cpu與記憶體的均衡。硬碟,記憶體,cpu,這三者c3取2,呵呵,我都介紹了。

lucene

使用了多種現代搜尋領域的演算法,稍微深入**現代的搜尋領域即可發現它不是突出大家對語言的熟悉程度,而是大家解決問題的方法即演算法。以前有多人想對lucene進行語言層面的改造,改造為c plus plus,我想效能雖小有差異,但無此必要。

,吳眾欣:目前的研究領域是服務組合,這是乙個更加有意思的問題,舉個例子,就像是工廠的流水線,將各種部件整合起來,形成乙個完整的產品,中間有更多的變數發生。但不屬於這次訪談的內容,我們就不多談了。

與se的相關開發經驗,有一點。比如自己寫過了乙個中文分詞解析器,用c#寫的,演算法基於dijkstra,但是這個是一種經驗型的解析器,不太完善。還有就是從倒排索引,恢復出被索引的文件,這需要對索引的過程,結構比較了解。還有就是用國圖的都柏林core文件,做了多於

100m

條記錄的索引,其中分詞器有cjk分析器,標準分詞器,自然語言分詞器,產生了3個類別的索引,對lucene的中文查詢效能好好的測試了一遍,呵呵,誰給我乙個大眾普適的中文查詢詞分布,就能告訴大家那種分詞效果好了,zipf定律也不一定對!

吳眾欣:《lucene分析與應用》是對lucene源**進行深入分析的書籍,迄今為止,它是分析最透徹的一本。從標引到查詢,主要的過程,演算法,都講到了。前面提到的lucene特點,在這本書中講的很細緻。勘誤內容也發在china-pub上,是想給大家提供一本有質量保證的書,同時也希望大家不要只想著去用,想想怎麼掌握根本的東西,我們自己是否也能創新?趙炯那本《linux原始碼分析》早寫出來了,作業系統方面中國怎麼一直就沒突破?好像是乙個國際作業系統牛會,中國15年都沒發文了,大家灌水的功夫都不夠了?

吳眾欣:談不上預見,搜尋技術帶來了大家對資訊的關聯關係認識從關係代數的強關聯,到松關聯的關係上來,恨不得都是key與value對, 大而簡單的表。彈性的框架是大家近期追求的,雲計算也是網格的社會主義初級階段的典範,針對的問題都是有一定規模的資料量,效能越來越被重視,解決方案也 越來越實際,想清楚的了解發展趨勢,就得深入的探源這些技術背後的本質,從細微處著手,大處著眼,看技術雲昇雲湧,潮起潮落!這套用了程式設計師的一句話了!

《科學的歷程》,《相對論》,《建築模式語言》,《李約瑟看中國古代科技史》,《明式家具研究》,《鑑餘雜稿》大家也都看看,不但打破我們東方思維模式,被西方文化衝擊時,還能保留我們自己一些有益的文化內涵!

專家訪談 談談虛擬化的價值

專家訪談 談談虛擬化的價值 張巍,就職於某知名報社技術部,具有12年以上的網路管理經驗。五次當選微軟最有價值專家 mvp 技術專長為sql server ad windows 管理架構。精通微軟伺服器相關產品以及bdd解決方案和虛擬化技術。國內知名虛擬化技術論壇vmsky 前身為vmware.cn ...

專家訪談 Flex技術對web開發的影響

專家訪談 flex技術對web開發的影響專家簡介 姜天格,時任nttdata資料系統整合 北京 上海公司專案經理。有多年專案管理經驗,在軟體專案管理 軟體過程改進等方面有深入的研究。1.flex 是adobe 公司的產品。我個人認為 flex 是開發web 系統客戶端的工具,用來替代 或 等伺服器端...

專家訪談 Flex技術對Web開發的影響

專家訪談 flex 技術對web 開發的影響 flex 是 adobe 公司的產品。我個人認為 flex 是開發 web 系統客戶端的工具,用來替代 或 等伺服器端解釋型介面的客戶端的技術。它是一系列產品的總稱,包括 等。它的長處一是提供了豐富的客戶端介面表現 二是它的儲存狀態能力能夠完全改變傳統 ...