主題搜索引擎的探究
ch數組表示的是文本內容,juli是詞的長度, TreeMap數組存儲不同長度的詞。
方法2:public synchrONized void ciPinTongJi(HashMaphm,char[]ch,int size,TreeMap[] tmp)。
方法2是并發執行的,正反匹配都需要這個方法。HashMap存儲字典中詞的第1個字,ch數組表示的是文本內容,size是文件的長度,TreeMap是數組存儲不同長度的詞,按照2個字、3個字、多個字的存儲順序存儲; 而且方法2是對外的接口,方法2調用方法1,并利用方法1返回的結果得到分詞的結果和詞頻結果。當從文本讀入1個字時,使用contain( )來判斷HashMap中是否存在這個字的映射,如果存在就取得長度等于字典中最長詞的一段內容,在TreeMap數組中進行查找,如果在TreeMap中找到對應的映射則對應的鍵值加1,輸出時在詞后面加上分割符號'',然后繼續重復前面的步驟,直到文件結束,退出;如果TreeMap中不存在,那么i+1,讀取下一個字,重復前面的步驟,直到文件的結尾,退出,程序結束。
正向匹配程序流程圖如圖3所示。
3 全文檢索引擎Lucene的應用
Lucene本身只是一個組件,若想讓Lucene真正起作用,還得在Lucene基礎上進行必要的2次開發[7].下面的方案是對Lucene的應用研究,在本系統實現過程中要解決的關鍵問題有:數據加工及文本數據庫的實現;全文數據索引;全文數據檢索和結果處理。
3.1 運行環境
操作系統:Windows NT/2000/xp;開發語言:Java、JSP;開發環境:MyEclipse6.5;API插件:Lucene2.3.2(Jakarta Lucene是一套免費的開放源代碼,由 Apache Jakarta開發);Web服務器:Apache的Tomcat6.0.
Lucene在Java環境下運行,因此首先要安裝jdk并設置環境變量JAVA_HOME,還要安裝tomcat6.0.到Lucene的官方網站下載1份拷貝(筆者下載的是最新版2.3.2),下載后將得到一個名為lucene-2.3.2.zip和apache-ant-1.7.0-bin.zip的壓縮文件,將其解壓即可。
3.2 系統結構
該應用分為3部分:(1)數據庫發布平臺,包括服務器、Java環境、Lucene API、中文分詞模塊;(2)HTML文件倒排檔生成系統;(3)服務器端執行的JSP程序和用戶界面。系統結構如圖4所示。
3.3 Lucene的擴展
對于Lucene組件包,為了能夠支持中文,要進行修改。首先將改寫后支持中文的分析包IKAnalyzer.jar加入到發布包Analysis包中。解開Lucene.zip,在解開的目錄srcdemoorgapacheLucenedemo下打開IndexHTML. java.在第1處import org. apache. lucene. analysis. standard. StandardAnalyzer;下面加1行import org.apache. lucene. analysis. IKAnalyzer;,把第2處writer=new IndexWriter (index, new StandardAnalyzer (),create);注釋掉,換成writer=new IndexWriter(index,new ChineseAnalyzer(), create);解開Luceneweb. War,釋放出configuration. jsp和result. jsp以及web. xml.編輯configuration. Jsp,找到indexLocation變量,賦值成/index(或者用戶自己建立的索引的目錄名稱);編輯result. Jsp,找到Analyzer analyzer=new StopAnalyzer();刪除或者注釋掉,改成Analyzer analyzer=new org. apache. lucene. analysis. IKAnalyzer();.這樣就擴展了Lucene的中文分詞的功能。
Lucene并沒有規定數據源的格式,而只提供了1個通用的結構(Document對象)來接收索引的輸入,因此輸入的數據源可以是:數據庫、WORD文檔、PDF文檔、HTML文檔……,只要能夠設計相應的解析轉換器將數據源構造成Docuement對象即可進行索引。本設計實現了doc、ppt、xls、pdf、txt、xml解析轉換器將其文本信息提取出來。
3.4 搜索性能的比較
經過多次測試取平均值,本設計在搜索主題信息的平均速度上比Google要快,雖然數量上不如Google檢索的多,但在信息符合度上明顯比其強。這樣就已經符合主題用戶,不一定要多只要精而且節省時間的需求,這對于當今效率優先的市場來說是非常有競爭力的。應用Lucene的搜索引擎的檢索速度與計算機的配置有關,配置較好的計算機的搜索時間相對要少。以檢索關鍵字編程為例,Lucene與Google性能比較結果如表1所示。
全文檢索引擎Lucene所構建的搜索引擎的搜索個數是由磁盤存儲的信息量的多少決定的,搜索時間除了第1次檢索有點慢,以后的時間耗費明顯少于通用搜索引擎。雖然通用搜索引擎提供的信息量大,但是并不是所有的信息都符合用戶的需求,用戶要在大量的信息中篩選有用的信息要花費大量的時間,可見主題搜索引擎的優勢,本設計基本符合預期的結果。
本文提出了一種解決中文全文檢索的方法,嵌入到Lucene中可以應用到搜索引擎、中小企業網站站內檢索、個人用戶桌面搜索引擎建立、特定文檔檢索數據庫建立等,從而實現對目標文檔方便地檢索管理,提高檢索效率。并且通過對全文檢索引擎Lucene的研究以及在Lucene API上的擴展,可以開發出多種應用程序,如:網站內容搜索系統、可檢索的郵件系統、海量文獻數據搜索系統。為了開發出性能指標更高的搜索引擎可以根據現有的排序算法或自定義排序算法自行開發結果排序模塊加入到Lucene中來進行測試比較,這些都有待于繼續研究。
評論