李遠遠
【摘要】 本文提出采用Heritrix和Sphinx技術搭建購物搜索引擎,將國內大型B2C網站作為爬取信息來源,運用聚焦爬蟲技術將目標定為抓取與用戶某一特定體驗主題內容相關的網頁搜索引擎模型的探索與研究。
【關鍵詞】 比較購物 搜索引擎 Heritrix
隨著網絡商品的極大豐富和分類的細化,搜索引擎已成為購物信息的重要來源。比較購物搜索引擎是一種基于專業化的垂直搜索引擎,通過對電子商務網站或者部分實體店的商品信息進行采集和整理,向消費者提供特定準確的商品信息及相關輔助設施,減少信息不對稱,優化購買決策;同時,幫助商家降低推廣成本獲得針對性極高的目標用戶,是未來網絡購物搜索的發展趨勢。然而,目前國內的比較購物引擎普遍追求“大而全”,在細化用戶需求和購物體驗上較為欠缺。商品信息比較偏重價格方面,對影響購物體驗的其他因素,諸如商家信譽、折扣降價、用戶評價、退換條款等較少涉及。本文提出采用Heritrix和Sphinx技術搭建購物搜索引擎,將國內大型B2C網站作為爬取信息來源,運用聚焦爬蟲技術將目標定為抓取與用戶某一特定體驗主題內容相關的網頁,以期更好的細分消費者人群,有針對性地滿足用戶體驗。
一、Heritrix和Sphinx技術特點
1.1 Heritrix工作原理
Heritrix是一款基于java 語言開發的開源網絡爬蟲,用于對網上的資源進行歸檔,建立網絡數字圖書館,目前已經建立了400TB的數據。
Heritrix爬蟲每次只對一張網頁的內容深度復制,包括獲取圖像以及其它非文本內容,抓取并存儲相關的內容。具體篩爬過程中,爬蟲先從隊列中取出下一個URL,通過HTTP協議將對應的網頁爬取下來,然后解析內容,并且提取出包含的URL,將其中新發現的URL追加到隊列中。最后將網頁存放到本地磁盤的網頁庫中。爬取過程在積累到一定數量網頁時即可終止,或者在隊列為空的時候終止。
1.2 Sphinx工作原理
Sphinx是一個基于SQL的全文檢索引擎,本系統所采用的是基于Sphinx研發并獨立發布的Coreseek,是一款專攻中文搜索和信息處理的中文全文檢索/搜索軟件,它適用于行業/垂直搜索、論壇/站內搜索、數據庫搜索、文檔/文獻檢索、信息檢索、數據挖掘等應用場景。Sphinx(Coreseek)整個系統主要由索引建立和維護程序(索引程序indexer)、查詢服務程序(后臺服務程序searchd) 、輔助工具程序(search, spelldump等)三大部分組成。
二、比較購物搜索引擎系統構建
2.1系統架構
系統整體架構由四部分組成:1)由Heritrix擴展而來的爬蟲系統,負責從互聯網抓取商品相關的信息。2)MySQL數據庫,存儲由Heritrix抓取的數據。3)Sphinx全文索引服務器,負責對商品建立全文索引。4)Tomcat服務器,負責向客戶端提供搜索服務。具體系統整體架構圖如圖1。
在初始化階段,Heritrix任務需事先通過配置和測試,確認后可由Linux系統通過Cron來自動調度。根據用戶輸入的商品信息,網絡爬蟲的每個抓取任務只負責單個購物網站數據的抓取,但每個任務的線程數量可由實際情況進行調整。篩爬啟動和結束時間通過Bash腳本來監控,每隔一定的時間去檢測相應的進程是否已經結束,如果某個抓取任務結束,則設定好下一次啟動的時間間隔。在本文構建的模型中采用MySQL數據庫存儲篩爬的信息,但直接從MySQL數據庫生成全文索引讀取比較費時,因此采用基于SQL的全文檢索引擎Sphinx結合MySQL,以“主索引+增量索引”的模式,大部分的搜索都集中在Sphinx全文索引中,少量數據可能需要直接訪問MySQL數據庫,這樣可以使應用程序更容易實現專業化的全文檢索。具體運行過程中通過Cron設定計劃任務,每隔一定的時間,Sphinx會從MySQL數據庫生成增量索引,然后執行主索引和增量索引的合并,并且在后臺操作過程中,一直可以向客戶提供搜索服務。
2.2數據存儲模型的建立
目前各種購物平臺和測評網站給出的商品信息異常復雜,每個網站的頁面都有自身特定的格式,相同商品在不同網站上也不盡相同,尤其是不同類型的商品在屬性上差異極大,因此, 需要建立統一的數據模型存儲數據,也即通過多張表能夠描述各種類型商品的基本屬性,而不需要針對每種商品建立不同的存儲表。本設計中構建了商品表、商品別名表、品牌表、信息采集表、信息采集元數據表、商品路徑表、網站表、店鋪表和商品類別表等一系列數據模型。以商品信息表為例,如表2-1所示。
表2-1 商品表(Commodity)
字段名 定義類型 特性 說明
id bigint unsigned 自增、主鍵 商品id
name varchar(255) 非空、全文索引 商品的名字
brand_id bigint unsigned 外鍵 品牌id
instance_id varchar(50) 非空 ISBN,ISRC,型號等
is_unique bool 非空 是否唯一
datetime datetime 非空 創建時間
instance_id可以是型號、貨號、ISBN、ISRC等用來區分商品的編號。大部分商品都會有型號(instance_id),因此只要有相同品牌且型號相同,就可以肯定是同一種商品。brand_id指向brand,指品牌如TCL,也可指出版社或生產廠商。商品的名字需要用Sphinx建立全文索引。
2.3信息提取流程
通過設置起始網站,然后根據需要提取并更新網頁上的商品信息,在信息提取過程中通過判別程序進行判定,對已存在商品添加商品別名,不存在的商品添加商品信息,最后更新店鋪信息。
2.3.1商品信息提取判別
提取產品的信息包括商品名稱、市場價、最高價、促銷價、促銷描述、銷量描述、評價、URL、店鋪、類別、屬性,其中對ISBN或ISRC、品牌和型號屬性要特殊處理,由于不同商家在添加商品信息時可能會有文字上的差異,提取時要結合Sphinx建立的全文搜索引擎仔細設計匹配規則。如果商品屬性中有ISBN,則可以肯定是圖書,如果有ISRC字樣,則肯定為唱片。這兩種編寫都具有全球唯一性,因此可以設定商品表中的is_unique字段為真,判斷時以此編號為準。
在沒有全球唯一編號的情況下,大部分商品可通過“品牌+型號”的方式來判斷是否為同一商品。其中型號可能有別名,如“貨號”等。其余情況,以商品名字來判斷,由于不同商家會往商品名稱里加入很多其他信息,通過名字來判斷同一商品可靠性較低。
2.3.2商品信息更新流程
商品信息更新分為店鋪信息更新和類別更新兩個部分。店鋪更新是在商品添加成功以后來處理的,一般每個商品都會有默認Context(購物網站),個別商品可通過網頁找到對應店家,此時就適用更新店鋪流程,更新店鋪最終是為了讓此次采集時的上下文環境更加明確,以便將來對采集數據進行分類處理。類別更新針對部分能從商品信息頁面中獲取的網站而言,為可選功能。
三、模型構建實踐
本文基于Heritrix和Sphinx技術搭建的購物搜索引擎在實踐中把淘寶網、天貓網、卓越亞馬遜、當當網作為重點爬取對象,能實現針對這些主要購物網一般商品的搜索。搜索結果頁面如圖2所示。商品比較結果頁面如圖3所示。
四、總結
本系統通過Linux系統的腳本管理技術,將Heritrix網絡爬蟲技術、Sphinx的分詞和全文索引的功能相結合,整合成一個能篩爬國內主流大型購物網站的比較購物搜索引擎。本系統還可以進一步進行完善,如可以對搜索關鍵字進行按照行為預先分類,幫助缺少計算機基礎的用戶搜索互聯網內容,進一步修訂商品信息數據存儲表,以更好的兼容越來越多的業務細分類型購物網站,這些都是下一步的發展方向。
參 考 文 獻
[1] Stefan Büttcher, Charles L.A.Clarke, Gordon V.Cormack. 信息檢索:實現和評價搜索引擎[M]. 北京:機械工業出版社,2012.1.
[2] Heritrix User Guide. Heritrix User Guide. Internet Archive.
[3] 蔣群.中國比較購物網站的調查分析和發展建議[J].北京郵電大學學報(社會科學版),2007,(1)
[4]徐意能, 陳碩. 基于用戶體驗的搜索引擎有效性評估研究[J].人類工效學,2008, 14(3):9-12