<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 主題搜索引擎的探究

          主題搜索引擎的探究

          作者: 時間:2012-06-05 來源:網(wǎng)絡(luò) 收藏

          ch數(shù)組表示的是文本內(nèi)容,juli是詞的長度, TreeMap數(shù)組存儲不同長度的詞。

          方法2:public synchrONized void ciPinTongJi(HashMaphm,char[]ch,int size,TreeMap[] tmp)。

          方法2是并發(fā)執(zhí)行的,正反匹配都需要這個方法。HashMap存儲字典中詞的第1個字,ch數(shù)組表示的是文本內(nèi)容,size是文件的長度,TreeMap是數(shù)組存儲不同長度的詞,按照2個字、3個字、多個字的存儲順序存儲; 而且方法2是對外的接口,方法2調(diào)用方法1,并利用方法1返回的結(jié)果得到分詞的結(jié)果和詞頻結(jié)果。當(dāng)從文本讀入1個字時,使用contain( )來判斷HashMap中是否存在這個字的映射,如果存在就取得長度等于字典中最長詞的一段內(nèi)容,在TreeMap數(shù)組中進(jìn)行查找,如果在TreeMap中找到對應(yīng)的映射則對應(yīng)的鍵值加1,輸出時在詞后面加上分割符號'',然后繼續(xù)重復(fù)前面的步驟,直到文件結(jié)束,退出;如果TreeMap中不存在,那么i+1,讀取下一個字,重復(fù)前面的步驟,直到文件的結(jié)尾,退出,程序結(jié)束。

          正向匹配程序流程圖如圖3所示。

          3 全文檢索引擎Lucene的應(yīng)用

          Lucene本身只是一個組件,若想讓Lucene真正起作用,還得在Lucene基礎(chǔ)上進(jìn)行必要的2次開發(fā)[7].下面的方案是對Lucene的應(yīng)用研究,在本系統(tǒng)實(shí)現(xiàn)過程中要解決的關(guān)鍵問題有:數(shù)據(jù)加工及文本數(shù)據(jù)庫的實(shí)現(xiàn);全文數(shù)據(jù)索引;全文數(shù)據(jù)檢索和結(jié)果處理。

          3.1 運(yùn)行環(huán)境

          操作系統(tǒng):Windows NT/2000/xp;開發(fā)語言:Java、JSP;開發(fā)環(huán)境:MyEclipse6.5;API插件:Lucene2.3.2(Jakarta Lucene是一套免費(fèi)的開放源代碼,由 Apache Jakarta開發(fā));Web服務(wù)器:Apache的Tomcat6.0.

          Lucene在Java環(huán)境下運(yùn)行,因此首先要安裝jdk并設(shè)置環(huán)境變量JAVA_HOME,還要安裝tomcat6.0.到Lucene的官方網(wǎng)站下載1份拷貝(筆者下載的是最新版2.3.2),下載后將得到一個名為lucene-2.3.2.zip和apache-ant-1.7.0-bin.zip的壓縮文件,將其解壓即可。

          3.2 系統(tǒng)結(jié)構(gòu)

          該應(yīng)用分為3部分:(1)數(shù)據(jù)庫發(fā)布平臺,包括服務(wù)器、Java環(huán)境、Lucene API、中文分詞模塊;(2)HTML文件倒排檔生成系統(tǒng);(3)服務(wù)器端執(zhí)行的JSP程序和用戶界面。系統(tǒng)結(jié)構(gòu)如圖4所示。

          3.3 Lucene的擴(kuò)展

          對于Lucene組件包,為了能夠支持中文,要進(jìn)行修改。首先將改寫后支持中文的分析包IKAnalyzer.jar加入到發(fā)布包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();.這樣就擴(kuò)展了Lucene的中文分詞的功能。

          Lucene并沒有規(guī)定數(shù)據(jù)源的格式,而只提供了1個通用的結(jié)構(gòu)(Document對象)來接收索引的輸入,因此輸入的數(shù)據(jù)源可以是:數(shù)據(jù)庫、WORD文檔、PDF文檔、HTML文檔……,只要能夠設(shè)計相應(yīng)的解析轉(zhuǎn)換器將數(shù)據(jù)源構(gòu)造成Docuement對象即可進(jìn)行索引。本設(shè)計實(shí)現(xiàn)了doc、ppt、xls、pdf、txt、xml解析轉(zhuǎn)換器將其文本信息提取出來。

          3.4 搜索性能的比較

          經(jīng)過多次測試取平均值,本設(shè)計在搜索信息的平均速度上比Google要快,雖然數(shù)量上不如Google檢索的多,但在信息符合度上明顯比其強(qiáng)。這樣就已經(jīng)符合用戶,不一定要多只要精而且節(jié)省時間的需求,這對于當(dāng)今效率優(yōu)先的市場來說是非常有競爭力的。應(yīng)用Lucene的的檢索速度與計算機(jī)的配置有關(guān),配置較好的計算機(jī)的搜索時間相對要少。以檢索關(guān)鍵字編程為例,Lucene與Google性能比較結(jié)果如表1所示。

          全文檢索引擎Lucene所構(gòu)建的的搜索個數(shù)是由磁盤存儲的信息量的多少決定的,搜索時間除了第1次檢索有點(diǎn)慢,以后的時間耗費(fèi)明顯少于通用。雖然通用搜索引擎提供的信息量大,但是并不是所有的信息都符合用戶的需求,用戶要在大量的信息中篩選有用的信息要花費(fèi)大量的時間,可見搜索引擎的優(yōu)勢,本設(shè)計基本符合預(yù)期的結(jié)果。

          本文提出了一種解決中文全文檢索的方法,嵌入到Lucene中可以應(yīng)用到搜索引擎、中小企業(yè)網(wǎng)站站內(nèi)檢索、個人用戶桌面搜索引擎建立、特定文檔檢索數(shù)據(jù)庫建立等,從而實(shí)現(xiàn)對目標(biāo)文檔方便地檢索管理,提高檢索效率。并且通過對全文檢索引擎Lucene的研究以及在Lucene API上的擴(kuò)展,可以開發(fā)出多種應(yīng)用程序,如:網(wǎng)站內(nèi)容搜索系統(tǒng)、可檢索的郵件系統(tǒng)、海量文獻(xiàn)數(shù)據(jù)搜索系統(tǒng)。為了開發(fā)出性能指標(biāo)更高的搜索引擎可以根據(jù)現(xiàn)有的排序算法或自定義排序算法自行開發(fā)結(jié)果排序模塊加入到Lucene中來進(jìn)行測試比較,這些都有待于繼續(xù)研究。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 探究 搜索引擎 主題

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();