Iveely Search Engine在經過一個月艱辛的測試之后,0.3.0終於與大家見面了,本次版本的主題是:實時信息檢索。
項目及源碼下載地址 http://iveelyse.codeplex.com 也許你會懷疑我指的是否是"實時搜索“?我想回答你的是,這是邁向實時搜索的一大步。那么0.3.0到底新增加了哪些東西?0.3.0中更改了爬蟲策略,索引策略。 在爬蟲方面,我們放棄了以前的完整遍歷整個網站,采用廣度遍歷3000個網頁后,然后下次再廣度遍歷3000個不同的網頁且更新以前爬行過得網頁,這樣可以保證最新的數據可以盡快搜到。索引方面,拋棄了以往的數據結構,采用新的二維表,快速定位索引項。當然還有添加了IveelySE.Resource,用於保證資源文件的存在,因為前兩個版本的時候很多網友反應有些文件找不到,現在不用擔心這個問題了。當然我們還添加了Help Tools project ,例如用它可以查看IveelySE的一些數據信息,當然並不是很全面。下圖是IveelySE對博客園進行爬取后的網頁PageRank查看:
下面我們看一下,如何根據IveelySE 0.3.0 1分鍾 搭建自己的搜索引擎。
第一步:環境配置(可選)
IveelySE是在Windows下開發的,運行環境.Net 4.0 ,請確定您的計算機或服務器上安裝了.Net 4.0 ,如果你的計算機或服務器是Linux,請參考Mono安裝.Net環境。如果環境都存在,請忽略此配置。
第二步:定位應用程序集:IveelySE.Run.Task.exe
在默認情況,IveelySE的應用程序都定位在\IveelySE\IveelySE.Program文件夾中,我們主要使用的是IveelySE.Run.Task.exe進行我們的任務,在上一個版
本我們已經實現了一鍵式運行,此刻不要認為其它文件都不重要,在IveelySE生成的每個文件都是有意義的。請不要任意刪除文件。主要文件的意義如下:
文件名 含義
strai.aiml 智能應答知識文件,支持函數式擴展。
StopWord.txt 停用詞文件
IveelySE.Index.exe 索引處理應用程序
IveelySE.Run.Task.exe 任務驅動機應用程序
IveelySE.Segment.exe 分詞程序
IveelySE.Spider.exe 爬蟲應用程序
IveelySE.Tools.exe 數據查看工具
IveelySE.AI.dll 智能應答處理程序
IveelySE.Cache.dll 緩存處理程序
IveelySE.Classify.dll 分類處理程序(暫時保留)
第三步:修改配置文件:IveelySE.Config
IveelySE.Config 是IveelySE的所以配置信息存儲的地方,任何一個配置信息,都在這里配置。每一個配置項的含義如下:
配置項 含義
HighLight 高亮顏色標記
Delimiter 分隔符
TrainFile 隱馬爾科夫分詞模型訓練文件
CrawlerTemp 爬蟲數據臨時存放目錄
DataDir 正式數據文件存放目錄
PageRankFile 網頁權值存放文件
PageRankContent 網頁URL關聯文件
PageRankList 網頁權值集合
IndexTemp 索引臨時文件
IndexDir 索引文件
SystemUpdate 系統是否更新,標識系統是否存在新的數據產生
CurrentPageIndex 當前網頁記錄的編號
Crawler 爬蟲入口地址,支持多地址,以,分隔
第四步: 執行任務,運行IveelySE.Run.Task.exe
運行截圖如下:
(圖一)
(圖二)
第五步: 執行搜索,打開網頁http://127.0.0.1:8088/query=yourkeyword
下面,你就看到了時刻搜索的信息,過一會你會看到信息的信息會出現在你的搜索結果中,哪怕是首頁中剛放不久的信息。
根據上面信息你是否發現了,僅僅過了4分鍾,就可以搜索到頁面上的新信息。
第六步: 個性化定制搜索頁面(可選)
也許你已經發現了,IveelySE搜索的客戶端並沒有寫什么程序,完全來自於瀏覽器的請求。那么在瀏覽器這一端,你就可以自己寫屬於自己的搜索界面
搜索界面如何寫?
根據http://127.0.0.1:8088/query=我的關鍵詞(第一種訪問方式)的搜索規則,在您的頁面當中每次請求這個鏈接即可。詳細略。如果你需要定制復雜的頁面,你
也可以通過TCP\IP協議訪問服務器端口5001,傳入關鍵字,服務端會返回搜索文本(第二種訪問方式)。
此時此刻,一個屬於你自己的搜索引擎已經誕生,但是請別着急,我不是一個報喜不報憂的人,我還是要告訴你現階段, IveelySE的不足之處。
1. IveelySE不適合大規模數據處理, 雖然存在BigData項目,但是現階段0.3.0中,我取消了對大數據的支持,原因是大數據處理需要分布式,而分布式現階段並不能為iveelySE的未來帶來一定的意義,當然后期一定很有影響。現階段更加關注IveelySE自身的特色。2. IveelySE現階段版本,不給於任何性能保證。雖然我知道IveelySE的當前性能,對於100萬URL的網站處理,可以容納,性能也可以達到一定的要求。但是對於內存過小的服務器,CPU較弱的機器,我不能保證性能上有一定的衰減。但是,性能一定是我們關注的重要問題。
IveelySE 下一步 0.4.0的主要目標是什么呢?從0.1.0到0.3.0已經慢慢走過來,0.4.0將圍繞着知識提取為主要目標。什么是知識提取?假設網頁中有句話“微軟亞太研發集團主席是張亞勤,他12歲考入中科大少年班。”,我們希望IveelySE能夠提取里面的知識信息,讓用戶搜索“微軟亞太研發集團主席是誰?”我們希望返回“張亞勤”,“張亞勤多少歲進入中科大少年班?”我們期望返回“12歲”。也許你覺得不可思議,但這正是 IveelySE的定位信條:你最想知道什么?。如果IveelySE不堅定這個方向走下去,那么它將沒有意義。
Iveely 是I void everything,enjoy loving you的首字母縮寫,表達搜索人對搜索引擎的熱愛,所有源碼的開放,都是為了知識的共享,如果您有好的想法和建議,可以發送郵件至我:liufanping@iveely.com 或 微博,如果您想參與進來,貢獻您的代碼,請聯系我。