標籤:軟體工程師 web前端 架構設計 智慧財產權
垂直搜尋引擎研發經驗總結什麼是垂直搜尋引擎?
垂直搜尋引擎是針對某一行業的搜尋引擎,是搜尋引擎的細化和延伸,是對網頁庫中的某類資訊進行一次整合,定向分欄位抽取出所需要的資料,再進行二次處理和索引,最後根據使用者提交的請求,返回搜尋結果。
與普通的網頁搜尋引擎相比,它們最大的區別是對網頁資訊進行了結構化資訊抽取,也就是將網頁的非結構化資料幫浦成特定的結構化資訊資料,好比網頁搜尋是以網頁為最小單 位,而垂直搜尋是以結構化資料為最小單位,這個結構化資料可稱為記錄。然後,再將這些資料(記錄資訊)進行進一步的加工處理,如:去重、分 類等,最後分詞、索引再以搜尋的方式滿足使用者的需求。很顯然的,這個過程很像傳統的資料庫檢索。但是,傳統的資料庫檢索,是基於字串匹配的,沒有相關性排序。當然,傳統資料檢索,也有自己的優勢,支援複雜的表串連操作。垂直搜尋引擎在這一點上是比較弱的。可以說,垂直搜尋引擎是基於現實需求下的通用搜尋和資料庫檢索相互折中的方案。
垂直搜尋引擎的一般流程:
定向抓取 ==> 網頁資訊抽取 ==> 二次處理和分詞 ==>索引和檢索 ==> 相關性排序
垂直搜尋特點:
(1)垂直搜尋引擎抓取的資料來源於垂直搜尋引擎關注的行業網站:
比如:找工作的搜尋引擎 www.deepdo.com 的資料來源於:www.51job.com , www.zhaoping.com , www.chinahr.com 等等;股票搜尋引擎 www.macd.cn 的資料來源於: www.jrj.com.cn , www.gutx.com 等股票網站;
(2)垂直搜尋引擎抓取的資料傾向於結構化資料和中繼資料:
比如:我們找工作關注的:職位資訊: 軟體工程師;公司名稱,行業名稱:軟體公司,外包行業等;地點:北京,海澱;
(3)垂直搜尋引擎的搜尋行為是基於結構化資料的搜尋:
比如: 找:海澱 軟體工程師 的工作等。
為什麼我們要開發自己的垂直搜尋引擎平台?
(1)Lucene弱點:不支援分布式、速度慢、效能差
(2)垂直搜尋引擎,索引的對象是結構化資訊(記錄),必須支援欄位索引和檢索,而通用的資料引擎,不支援這方面功能。
(3)自主智慧財產權
(4)需要支援複雜業務
垂直搜尋引擎什麼研發?(重點:索引和檢索)
(1)業務需求分析和抽象化:
(2)整體架構設計:
資料服務平台模組:負責引擎資料的統一管理,接收帶有類型標識的待索引資料和索引過程中產生的用於檢索的格式化資料;
CacheServer模組:負責web前端與引擎後台之間的資料互動(接收請求、分析請求),以及緩衝檢索結果;
MiddleServer模組:轉寄檢索請求,併合並各IndexSearch返回的檢索結果,完成相關性排序;
IndexSearch模組: 分析檢索請求 ==> 語素系列 ==> 合并各語素檢索結果 ==> [其它過濾] ==>
IndexBuilder模組:根據配置,對輸入資料索引,產生倒排索引資料
(3)詳細設計和編碼:
(4)需要具備的知識點:鏈表、棧、隊列和優先隊列、雜湊表、、B+樹、快速排序、堆排序、基於檔案的外排序、倒排索引、多線程和互斥、socket編程(select和epoll)、系統編程(目錄、檔案操作和管理)等等。
垂直搜尋開發學習視頻
連結:http://pan.baidu.com/share/link?shareid=3520653814&uk=3611155194 密碼:3fgz