用開源軟體建垂直搜尋引擎

2022-12-20 06:18:05 字數 2883 閱讀 5938

用solr、nutch等開源軟體來構建電子元器件垂直搜尋引擎涉及很多實現細節,本文結合實際應用系統對資料採集、中文搜尋、結果輸出、分頁處理、整合資料庫等重點問題提出了切實可行的解決方法。

針對搜尋引擎的各種開源技術是開源社群的一枝奇葩,它大大縮短了構建搜尋應用的週期,並使得根據特定需求打造個性化應用的垂直搜尋引擎系統成為可能。作為乙個獨立的企業搜尋應用解決方案,solr在美國的眾多知名**中得到應用,如美國最大的科技資訊類**cnet。solr基於高效能的lucene開發,它不僅實現了比lucene更為豐富的查詢語言和更為優異的查詢效能,而且實現了可配置、可擴充套件,對外提供類似於web服務的api介面。

使用者可通過http請求向搜尋引擎伺服器提交指定格式的xml檔案生成索引,也可以通過「http get」操作提出查詢請求,並得到xml格式的返回結果。solr結合其他開源搜尋軟體成為構建行業垂直搜尋引擎的優選方案。

垂直搜尋引擎的總體結構

本文所述的電子元器件垂直搜尋引擎以solr1.4為核心框架,綜合應用nutch、ikanalyzer等開源軟體,充分利用它們靈活的配置、豐富的功能以及高效的效能,力求用最簡單的**,快速實現海量電子元器件資訊的採集、文字搜尋、引數檢索,滿足技術研究人員與市場採購人員對於行業領域知識的專、精、深要求。

電子元器件垂直搜尋引擎系統包括資料採集、資料加工、資料規劃和管理、搜尋服務四個主要部分。資料採集部分負責對internet、intranet、內部電子文件、結構化資料(關聯式資料庫、xml)等進行抓取、濾重、分類、摘要;資料加工部分負責對採集來的資料進行篩選、編輯和審校;資料規劃和管理部分負責系統元資料的定義與管理,包括分類體系、特性引數、引數型別、計量單位等;搜尋服務則為使用者提供分類導航、資料檢索、行業報告及其他個性定**務(系統的總體結構如附圖所示)。本文結合選取其中的資料採集(web頁面抓取、結構化資料採集、中文支援)、搜尋結果呈現(層面瀏覽、高亮顯示、分頁處理)等幾個重點實現方法進行介紹。

資料採集1. web頁面抓取

採集網際網路web頁面的資料並非solr所長,我們可以借助在這方面有著突出表現的nutch。nutch基於hadoop分布式系統,既可以在單台機器上執行,也可以在多台機器構成的集群上執行。nutch可以根據使用者需要配置優先抓取某些頁面,而且抓取質量很高。

本系統我們利用solr作為處理搜尋結果的源和入口,而讓nutch負責它最擅長的工作:抓取和提取內容。nutch的配置檔案是配置的內容包括指定蜘蛛的名稱、啟用外掛程式、限制單機一次執行抓取的最大url數、指定抓取規則等。

完成這些基本配置以後就可以進行抓取分析操作。

2.結構化資料採集

為了充分利用現有資源,提高資料檢索效率,我們把收錄了100多萬條電子元器件產品、1000多萬條特性引數資訊的中國電子元器件產品資料庫和中國電子廠商資料庫、南韓電子元器件資訊庫作為結構化資料來源,向solr一次全部匯入資料,後續維護的部分使用增量匯入。用於搜尋的表主要涉及產品基本資訊表、廠商基本資訊表、分類表、特性參數列、引數模板表、模板資訊表、產品特性引數值表、計量單位表等。

solr通過可配置的方式將資料庫中多列、多表的資料生成solr文件。配置的方法是在域結點內定義具體的字段(類似資料庫中的字段),然後通過配置檔案匯入所有資料,發現並處理由插入、更新帶來的變化。

3.中文搜尋支援

solr的分析包並沒有直接提供中文搜尋支援。這裡選用輕量級的中文分詞工具包ik analyzer來配合工作。ik analyzer基於j**a開源,如今新版本的ikanalyzer 3.

2.0已發展為面向j**a的公用分詞元件,獨立於lucene專案,同時提供了對solr的專用介面。

電子元器件搜尋引擎系統利用的ikanalyzer特性包括:特有的「正向迭代最細粒度切分演算法」具有60萬字/秒的高速處理能力;多詞元處理器分析模式,支援英文本母(ip位址、email、url)、數字(日期、常用中文數量詞、羅馬數字、科學計數法),中文詞彙(姓名、地名處理)等分詞處理;優化的詞典儲存更小佔記憶體用;針對lucene全文檢索優化的查詢分析器ikqueryparser;採用歧義分析演算法優化查詢關鍵字的搜尋排列組合,可極大地提高檢索的命中率。

由於電子元器件垂直搜尋應用面向特定的專業領域,ik analyzer本身雖然已經提供很豐富的常用詞彙,但對於專業性強的應用仍然顯得捉衿見肘。好在ikanalyzer提供了良好的擴充套件能力,我們利用配置檔案輕易實現了使用者詞典的擴充套件與定製,這樣就可以搜尋到如「精密薄膜柱狀無引線電阻器」、「半波隨機型固體繼電器」這些專業詞彙了。

搜尋結果呈現

solr的搜尋結果通常以xml格式返回,這對於普通使用者而言不合適,不過solr提供了多種途徑(如正規表示式和文字解析)將搜尋返回的結果資訊進行重新布局,以產生使用者易於理解的可視頁面,但都需要大量的編碼工作。在系統中我們利用xslt把xml格式的結果檔案轉換成html檔案。經過轉換後,就可以得到能看到搜尋結果的頁面了。

solr提供了層面瀏覽(facet)功能,它類似於一種分類篩選。執行層面無需在solr中進行配置,但可能需要按照新的方式對應用程式內容進行索引。在已索引的字段中完成分層,層面對未進行斷詞的非小寫詞最為有效。

facet欄位通常不需要儲存,因為分層面的總體思想就是將可讀的值顯示給使用者。要注意的是,solr沒有在層面中建立類別,必須由應用程式自身在索引期間進行新增,正如在索引應用程式時給文件指派關鍵字一樣。如果存在層面字段,solr就提供了查明這些層面及其計數的邏輯。

另外,為了在搜尋結果中取得最匹配的一段文字並突出顯示出來,有必要對搜尋結果進行高亮顯示。

高亮顯示可修改配置檔案實現。該配置中包括了高亮文字時使用的字首和字尾(通常在此指定突出顯示文字的字型、字型大小、顏色或其他風格)。

如果搜尋結果較多還需要分頁,但我們不希望自行編寫複雜的**實現分頁。我們在系統中使用了乙個開源的分頁外掛程式,專門為solr量身定製,由它對solr的搜尋結果進行分頁處理。

實際上,solr的功能遠不止以上這些,還有很多通過簡單配置和少量修改即可實現的搜尋功能有待研究開發。目前,我們圍繞以solr為主體的探索以及各項功能的實現仍在繼續,力求在保證系統功能與效能的前提下,充分利用開源軟體的優勢,降低開發成本。

天網搜尋引擎

技術報告 國際互連網 internet 這乙個全球性的計算機網路在九十年代得到了迅速的發展,連入的主機數以幾乎每年翻一翻的速度增長,並已將它的影響擴大到資訊化社會的各個角落。internet上豐富的資訊資源和便捷的通訊手段是其吸引使用者的主要因素。www world wide web 是目前inte...

搜尋引擎優化

進入這個行業也沒有人的帶領,是機緣巧合下走入了 推廣的大門,開始覺得seo其實就是那麼一回事兒,沒有什麼難處。每天編輯下文章,然後發發外部鏈結。那時候懵懂的認為在論壇和貼吧發發帖子就是做外鏈了,現在想起來那時候的自己真的很幼稚,但是方法並不錯。只是很粗淺而已。這樣做了久了。人就會感到乏味,枯燥。甚至...

使用搜尋引擎

石牛江鎮中學鄭小 教學內容 學會使用搜尋引擎 教學目標 1 掌握使用搜尋引擎的方法 2 了解幾個不同的搜尋引擎 3 熟悉複雜條件的搜尋方法 教學重點 搜尋引擎的使用 教學難點 複雜條件的搜尋方法 學習方式 根據老師布置的任務,自己動手操作,老師抽查學習結果。實習任務 1 通過搜尋,找出 遠端教育 的...