• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Solr的企業(yè)級搜索引擎的設(shè)計

      2013-12-31 00:00:00趙凱王敏
      電子世界 2013年22期

      【摘要】分散的計算機上存儲有大量的信息,企業(yè)級用戶急需一種工具對這些零散的信息進行統(tǒng)一的查找,最好還可通過配置對特定的網(wǎng)站進行檢索,這就是企業(yè)級搜索引擎,本文使用開源項目Solr設(shè)計了一款面向企業(yè)的搜索引擎。整體設(shè)計基于SSH設(shè)計框架實現(xiàn);服務(wù)器端采用Heritrix抓取網(wǎng)頁,加入IKAnalyzer增加中文分詞功能;客戶端采用Ajax技術(shù)實現(xiàn)異步通信,優(yōu)化用戶體驗。

      【關(guān)鍵詞】Solr;Heritrix;SSH;企業(yè)級;搜索引擎

      1.研究背景

      隨著Intenet的普及與企業(yè)信息化步伐的不斷加快,在企業(yè)信息化的發(fā)展趨勢下,越來越多的企業(yè)廣泛地應(yīng)用Intemet技術(shù)實現(xiàn)數(shù)據(jù)共享、業(yè)務(wù)集成與信息發(fā)布,信息內(nèi)容也正在以驚人的速度增加。文件、圖片、多媒體等非結(jié)構(gòu)化數(shù)據(jù)存放零散,而企業(yè)內(nèi)部業(yè)務(wù)系統(tǒng)有大量的結(jié)構(gòu)化數(shù)據(jù),如報表與業(yè)務(wù)功能,有時候要找到它們?nèi)缤蠛漆?,如果不及時解決這個問題,很多原來有價值的信息無法得到企業(yè)的有效利用。

      目前許多企業(yè)級門戶網(wǎng)站建立搜索引擎服務(wù)通常通過調(diào)用互聯(lián)網(wǎng)搜索引擎的搜索服務(wù),來實現(xiàn)對本站點的搜索。但是對于一個有很多子網(wǎng)站的企業(yè)門戶網(wǎng)站來說,通用搜索引擎存在著很多缺陷,滿足不了這種搜索服務(wù)要求,如:盡管通用引擎提供對指定站點內(nèi)的查詢,但是不能同時對多個站點同時查詢;通用搜索引擎不能及時更新索引,會導致搜索結(jié)果不全和出現(xiàn)“壞鏈接”;調(diào)用通用搜索引擎的響應(yīng)速度慢??傊ㄓ盟阉饕嬗泻軓V的信息采集面,深度不夠,它采取的是廣度優(yōu)先采集策略,而企業(yè)搜索需要深入挖掘與企業(yè)相關(guān)的所有信息,因此應(yīng)采用深度優(yōu)先的采集策略,同時由于某些行業(yè)網(wǎng)站或數(shù)據(jù)庫的信息是動態(tài)更新的,而且更新頻率很高,需要更頻繁的抓取這些信息,因此企業(yè)搜索引擎正是應(yīng)這種需求而產(chǎn)生。研究如何設(shè)計一個適用于企業(yè)信息檢索的搜索引擎,具有重要的意義。文中采用Struts+Spring+Solr+Heritrix+IKAnalyzer的開發(fā)工具包,進行了一個中文全文搜索引擎的設(shè)計。

      2.技術(shù)路線

      2.1 總體架構(gòu)

      該搜索引擎搜索部分框架可概括為Heri trix+Solr+IKAnalyzer,如圖1所示。實現(xiàn)方案中,把Solr作為處理搜索結(jié)果的源和入口,Heritrix負責它最擅長的工作:抓取網(wǎng)頁內(nèi)容。使用Solr作為搜索后端,可以充分使用Solr的搜索特性:查詢拼寫檢查,搜索提醒,數(shù)據(jù)復(fù)制及查詢緩存等??紤]到Solr本身中文分詞功能較弱,因此引用IKAnalyzer來增強其中文分詞功能。

      鑒于企業(yè)級搜索引擎需要部分定制功能,例如,可能會需要設(shè)定訪問一些企業(yè)本身感興趣的網(wǎng)站,以提高搜索的速度和精確度,因此需要配置系統(tǒng)維護接口,實現(xiàn)人工的實時定制。

      Solr本身提供了靈活的特性,能夠從文本、數(shù)據(jù)庫和網(wǎng)頁中直接導入數(shù)據(jù),而企業(yè)本身也需要對檢索到的信息進行整理分類,會希望搜索引擎能夠提供一些人工智能和個性化的東西,因此在設(shè)計中加入了數(shù)據(jù)庫的支持,以實現(xiàn)對網(wǎng)頁內(nèi)容的學習、分析和聚類等,從而可保證提供智能化結(jié)果。

      2.2 設(shè)計框架

      系統(tǒng)設(shè)計采用基于SSH框架的三層結(jié)構(gòu),即表現(xiàn)層、業(yè)務(wù)層、持久層。

      其中表現(xiàn)層使用struts框架,該層將直接面向用戶,精美的UI將能夠體現(xiàn)良好的可用性,本次設(shè)計用使用了開源的Yui-ext界面包,可增加彈窗、菜單等效果;使用的Ajax技術(shù)實現(xiàn)異步通信功能,提升用戶的體驗;利用struts框架與Yui-ext相結(jié)合,Yui-ext進行前臺數(shù)據(jù)顯示,而struts框架作為數(shù)據(jù)跳板向前臺提供數(shù)據(jù)。

      業(yè)務(wù)層使用spring框架,該層作為持久層數(shù)據(jù)與表現(xiàn)層之間數(shù)據(jù)傳輸?shù)募~帶,spring框架封裝了DAO和JDBC模塊,可以保持數(shù)據(jù)庫訪問代碼干凈簡潔,并且可以防止因關(guān)閉數(shù)據(jù)庫資源失敗而引起的問題。

      持久層使用Hibernate框架,目前,已經(jīng)很少有人J2EE應(yīng)用會直接以JDBC方式進行持久層訪問,畢竟用面向?qū)ο蟮某绦蛟O(shè)計語言來訪問關(guān)系型數(shù)據(jù)庫令人沮喪;反之,多數(shù)人會以O(shè)RM框架來進行持久層訪問,其中Hibernate框架靈巧、輕便,非常適用于持久層。

      3.關(guān)鍵技術(shù)

      3.1 Solr簡介

      Solr是Apache的一個開源子項目,它是一個采用java5開發(fā)的、基于lucene全文搜索庫的企業(yè)級搜索服務(wù)器,提供了豐富的查詢語言,可根據(jù)用戶需求配置和擴展,并對查詢性能進行了優(yōu)化。Solr提供了一個完善的功能管理界面,可輸出多種格式,能夠?qū)崿F(xiàn)異構(gòu)系統(tǒng)的整合,有強大的插件功能,使用它很容開發(fā)出一款優(yōu)秀的企業(yè)級搜索引擎。

      3.2 Heritrix與Solr的整合

      Heritrix與Solr的配置主要集中在服務(wù)器端,整個搜索的過程可以概括為,Heritrix爬蟲抓取網(wǎng)頁之后,編寫相應(yīng)的代碼對爬蟲抓取頁面的遍歷,將網(wǎng)頁傳遞給JoyDoc框架,獲取頁面中的content,source,title等信息,建立數(shù)據(jù)庫,然后使用Solr索引功能對網(wǎng)頁數(shù)據(jù)庫中的數(shù)據(jù)建立索引,從而實現(xiàn)全文搜索。其中,需要重新定制heritrix的Extractor方法,配置Heritrix根目錄下的conf文件中的Heritrix文件。

      3.3 Struts+Spring+Hibernate的整合

      SSH框架的整合直接影響到整個網(wǎng)站的用戶體驗和可用性,整合主要以下兩個方面。

      Struts整合Spring,可以將Struts Action管理委托給Spring框架,整個過程需要兩個步驟:

      (1)Action中,使用IOC獲得服務(wù),配置struts-config.xml;

      (2)Spring配置文件中注冊該動作。

      Spring整合Hibernate,在Spring框架中,像JDBC DataSource或Hibernate SessionFactory這樣的資源,在應(yīng)用程序上下文中可以用bean實現(xiàn)。需要訪問資源的應(yīng)用程序?qū)ο笾恍柰ㄟ^bean引用得到這類預(yù)先定義好的實例的引用即可,需要三個步驟:

      (1)配置數(shù)據(jù)源,一般情況下有三種方式的數(shù)據(jù)源;

      (2)配置sessionfactory;

      (3)配置事務(wù)。

      3.4 中文分詞技術(shù)

      中文分詞對于搜索引擎來說是至關(guān)重要的指標,對于企業(yè)來說,絕大部分的搜索時針對中文索引,而Solr默認只支持引文索引,因此需要加入中文索引。

      IKAnalyzer實現(xiàn)了以詞典分詞為基礎(chǔ)的正反向全切分算法,適合于大部分用戶的搜索習慣,如搜索時使用“人民”即可涵蓋帶有“人民幣”的文章。對Solr加入中文索引,需要將IKAnalyzer的jar包導入/Tomcat 6.0/webapps/solr的lib里,然后在solr/conf/schema.xml中節(jié)點下添加個類型,從而實現(xiàn)索引和查詢的中文分詞。

      4.結(jié)語

      企業(yè)級搜索引擎目前發(fā)展還不完善,本文采用開源的Solr作為構(gòu)建企業(yè)級搜索引擎的核心,定制了網(wǎng)絡(luò)爬蟲Heritrix的Extractor方法,在單臺服務(wù)器上實現(xiàn)了一款基于SSH設(shè)計框架的企業(yè)級搜索引擎,具有一定的使用價值。如果進一步增加網(wǎng)絡(luò)設(shè)備,可實現(xiàn)基于Solr的分布式的垂直搜索引擎,進行實際使用和推廣。

      濉溪县| 通城县| 宣城市| 东丽区| 嘉善县| 特克斯县| 蒙阴县| 民勤县| 福安市| 河东区| 射洪县| 南华县| 灵丘县| 常德市| 皮山县| 宝清县| 德庆县| 陕西省| 承德县| 江西省| 班戈县| 台东县| 铁岭县| 长岛县| 田林县| 康定县| 西乡县| 浑源县| 新安县| 监利县| 错那县| 崇州市| 理塘县| 洱源县| 丹巴县| 大埔县| 温州市| 衢州市| 陈巴尔虎旗| 五指山市| 五莲县|