• 
    

    
    

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

      Web垂直搜索引擎實(shí)現(xiàn)過(guò)程的研究

      2016-05-14 00:24:05張弘弦田玉玲
      現(xiàn)代電子技術(shù) 2016年8期
      關(guān)鍵詞:爬蟲(chóng)

      張弘弦 田玉玲

      摘 要: Web垂直搜索引擎是一個(gè)復(fù)雜的信息系統(tǒng),目前大多數(shù)研究都集中在解決搜索引擎中出現(xiàn)的某一個(gè)方面的問(wèn)題,仍缺乏對(duì)Web垂直搜索引擎完整實(shí)現(xiàn)過(guò)程的相關(guān)研究。針對(duì)這個(gè)問(wèn)題,提出一種三層架構(gòu)的Web垂直搜索引擎的實(shí)現(xiàn)過(guò)程,整個(gè)過(guò)程包含數(shù)據(jù)準(zhǔn)備、查詢處理和界面交互。使用Java語(yǔ)言和相關(guān)的開(kāi)源工具,對(duì)實(shí)現(xiàn)過(guò)程描述的具體任務(wù)進(jìn)行實(shí)際操作,實(shí)現(xiàn)了一個(gè)查詢手機(jī)信息的Web垂直搜索引擎。該三層架構(gòu)和實(shí)現(xiàn)過(guò)程有效地為構(gòu)建面向主題的完整Web垂直搜索引擎提供了理論依據(jù)和實(shí)踐指導(dǎo)。

      關(guān)鍵詞: Web搜索; 搜索引擎實(shí)現(xiàn); 垂直搜索架構(gòu); 爬蟲(chóng)

      中圖分類號(hào): TN911?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)08?0055?05

      Research on implementation process of Web vertical search engine

      ZHANG Hongxian, TIAN Yuling

      (School of Computer Science and Technology, Taiyuan University of Technology, Taiyuan 034000, China)

      Abstract: The Web search engine is a complex information system. However, most researches are concentrated on one detailed problem appearing in a aspect of the search engine, but they lack of the correlational research on the complete implementation process of Web vertical search engines. Aiming at this problem, the implementation process of a Web vertical search engine with a three?layer architecture is proposed, in which data preparation, query processing and interface interaction are contained. An actual operation of a certain task describing the implementation process was performed with Java platform and relative open?source tools. And by this operation, the Web vertical search engine that could query mobile information was realized. The three?layer architecture and implementation process provide a theoretical basis and practical guidance for building a complete subject?oriented Web vertical search engine.

      Keywords: Web search; search engine implementation; architecture of vertical search engine; crawler

      0 引 言

      從2000年開(kāi)始,Web垂直搜索引擎開(kāi)始贏得用戶的親睞[1?2]。視頻、音樂(lè)、圖片、軟件、貼吧、地圖分門(mén)別類展開(kāi)搜索,專業(yè)性更強(qiáng),主題相關(guān)性更高。然而Web垂直搜索引擎的應(yīng)用主題并不局限,擁有非常廣闊的發(fā)展空間,例如面對(duì)電子商務(wù)的商品搜索,數(shù)碼產(chǎn)品信息搜索以及近年開(kāi)始出現(xiàn)的微博搜索。垂直搜索的出現(xiàn)主要有兩個(gè)方面的原因:一是通用搜索引擎索引Web的全部?jī)?nèi)容變得越來(lái)越難,而垂直搜索引擎索引數(shù)據(jù)量較小且專業(yè),投入成本也相對(duì)較低;二是垂直搜索引擎提供的搜索質(zhì)量較高,因?yàn)樗梢运阉鞯酵ㄓ盟阉饕娌荒芩褜さ降捻?yè)面,而且在可搜索頁(yè)面上提供更強(qiáng)有力的搜索功能。垂直搜索引擎與通用搜索引擎的最大區(qū)別在于對(duì)網(wǎng)頁(yè)信息進(jìn)行結(jié)構(gòu)化信息抽取,即將網(wǎng)頁(yè)的非結(jié)構(gòu)化數(shù)據(jù)提取成特定的結(jié)構(gòu)化數(shù)據(jù)。構(gòu)建一個(gè)垂直搜索引擎主要有兩種方法:一種方法是通過(guò)爬蟲(chóng)爬取某種主題網(wǎng)頁(yè)而構(gòu)建專業(yè)索引;另一種方法是為用戶提供專業(yè)化搜索的接口。

      Web搜索引擎是種復(fù)雜、多組件信息檢索系統(tǒng)的具體應(yīng)用[3],也因其應(yīng)用在擁有超大規(guī)模數(shù)據(jù)的互聯(lián)網(wǎng)中,使構(gòu)建Web搜索引擎變得比較困難。已有眾多的研究者參與到Web搜索引擎的研究中,Brin和Page發(fā)表論文首次公開(kāi)大規(guī)模Web搜索引擎Google的設(shè)計(jì)原型[4],提出Web搜索引擎的基本組件包括爬蟲(chóng)(Crawler)、索引組件、搜索組件、排序系統(tǒng)以及反饋組件。高效Web垂直搜索的關(guān)鍵之一在于爬蟲(chóng)能否精確爬取主題相關(guān)的Web文檔,Soumen等人提出聚焦爬蟲(chóng)[5](Focused Crawler),利用一種能夠評(píng)估網(wǎng)頁(yè)是否與主題相關(guān)的分類器選擇性地爬取與預(yù)定義主題相關(guān)的頁(yè)面,實(shí)現(xiàn)了以目標(biāo)為導(dǎo)向的爬取。文獻(xiàn)[6]開(kāi)發(fā)了一種潛語(yǔ)義索引分類器,將鏈接分析和文本內(nèi)容結(jié)合起來(lái),目的是抓取指定主題域的Web文檔。文獻(xiàn)[7]設(shè)計(jì)并實(shí)現(xiàn)了一種基于網(wǎng)格架構(gòu)的大型Web搜索引擎,討論實(shí)現(xiàn)流程和細(xì)節(jié),對(duì)Web垂直搜索引擎的研究提供了寶貴的經(jīng)驗(yàn)。信息檢索領(lǐng)域的研究成果對(duì)Web搜索引擎有著較高的參照價(jià)值,特別是檢索模型的研究更加重要,Web搜索引擎的排序組件好壞很大程度上決定了用戶體驗(yàn)。信息檢索模型得到了飛速發(fā)展,傳統(tǒng)的檢索模型包括布爾模型、向量空間模型、概率模型、語(yǔ)言模型?,F(xiàn)代檢索模型的建立大多通過(guò)排序?qū)W習(xí)方法得到,即利用機(jī)器學(xué)習(xí)技術(shù)在數(shù)據(jù)集上自動(dòng)創(chuàng)建排序模型[8]。這些研究成果很多通過(guò)開(kāi)源軟件實(shí)現(xiàn),這些工具不僅為開(kāi)發(fā)軟件提供先進(jìn)的技術(shù)支持,而且大大縮短了開(kāi)發(fā)周期。

      本文提出了一種Web垂直搜索引擎的實(shí)現(xiàn)過(guò)程,以該過(guò)程為基礎(chǔ)開(kāi)發(fā)了一個(gè)查詢與手機(jī)相關(guān)信息的Web垂直搜索引擎,并且對(duì)實(shí)現(xiàn)原理和細(xì)節(jié)進(jìn)行了詳細(xì)的闡述。此垂直搜索引擎可以為搜索手機(jī)相關(guān)信息的用戶提供直觀的、快捷的、有效的手機(jī)信息搜索服務(wù),驗(yàn)證了這種實(shí)現(xiàn)過(guò)程的有效性和完整性。

      1 Web垂直搜索引擎的實(shí)現(xiàn)過(guò)程

      Web垂直搜索引擎與通用搜索引擎原理類似,都需要從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè)、建立索引,響應(yīng)用戶查詢。但是垂直搜索引擎可以返回結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)經(jīng)過(guò)人工分析與整理再存入數(shù)據(jù)庫(kù)中。本文將Web垂直搜索引擎的實(shí)現(xiàn)過(guò)程分為3層,分別為:數(shù)據(jù)準(zhǔn)備層、提供查詢服務(wù)層、前臺(tái)交互層。這3層可互相獨(dú)立開(kāi)發(fā),最終整合到一起形成一套完整的Web垂直搜索引擎。圖1為一種Web垂直垂直搜索引擎實(shí)現(xiàn)過(guò)程。

      1.1 數(shù)據(jù)準(zhǔn)備層

      數(shù)據(jù)準(zhǔn)備層的目的是準(zhǔn)備用于檢索的數(shù)據(jù),這些數(shù)據(jù)最終存放在關(guān)系數(shù)據(jù)庫(kù)中并建立倒排索引。Web垂直搜索引擎的目的是為用戶提供更專業(yè)、主題性更強(qiáng)的搜索服務(wù),這種服務(wù)與大量主題相關(guān)的數(shù)據(jù)為基礎(chǔ),數(shù)據(jù)處理分為兩個(gè)階段,第一個(gè)階段為采集原始數(shù)據(jù),原始數(shù)據(jù)來(lái)自互聯(lián)網(wǎng)某些主題性較強(qiáng)的、數(shù)據(jù)來(lái)源可靠的網(wǎng)站。原始數(shù)據(jù)大多是未經(jīng)處理的無(wú)結(jié)構(gòu)網(wǎng)頁(yè),這些原始網(wǎng)頁(yè)無(wú)法支持搜索服務(wù)并返回給用戶查看。第二階段為數(shù)據(jù)分析與處理,將原始無(wú)結(jié)構(gòu)網(wǎng)頁(yè)中的數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù),并將這些結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,這些存儲(chǔ)在數(shù)據(jù)庫(kù)中數(shù)據(jù)最終以更加直接的形式展示給用戶。然而,關(guān)系數(shù)據(jù)庫(kù)中模糊查詢難以應(yīng)對(duì)海量數(shù)據(jù)查詢,所以需要建立一種面向詞匯的數(shù)據(jù)結(jié)構(gòu),即倒排索引,以實(shí)現(xiàn)毫秒級(jí)的查詢性能。

      數(shù)據(jù)準(zhǔn)備層主要包含以下5個(gè)過(guò)程:

      (1) 選擇主題信息來(lái)源網(wǎng)站和網(wǎng)頁(yè)

      認(rèn)真選擇主題信息來(lái)源網(wǎng)站以確保原始數(shù)據(jù)的可靠性,通常需要遵循以下4個(gè)原則:來(lái)源網(wǎng)站沒(méi)有屏蔽爬蟲(chóng)對(duì)網(wǎng)頁(yè)的爬取;網(wǎng)頁(yè)內(nèi)容不是JavaScript動(dòng)態(tài)生成的。爬蟲(chóng)不需要模擬瀏覽器解釋腳本去生成網(wǎng)頁(yè)內(nèi)容,否則會(huì)嚴(yán)重影響爬蟲(chóng)效率;網(wǎng)站中網(wǎng)頁(yè)URL有統(tǒng)一的風(fēng)格。這樣的URL更容易被爬蟲(chóng)抓取,數(shù)據(jù)更加準(zhǔn)確;選擇訪問(wèn)量比較大的知名網(wǎng)站,保證數(shù)據(jù)源可靠性。

      (2) 網(wǎng)站和網(wǎng)頁(yè)內(nèi)容分析

      分析網(wǎng)頁(yè)的目的是定向抓取網(wǎng)頁(yè),在確定主題信息來(lái)源網(wǎng)站之后,為了能夠準(zhǔn)確獲取主題數(shù)據(jù),需要對(duì)網(wǎng)站的URL結(jié)構(gòu)進(jìn)行分析,找出實(shí)際擁有主題信息的一級(jí)URL頁(yè)面,該頁(yè)面通常擁有該主題下全部子主題的二級(jí)URL鏈接,分析出這些二級(jí)URL鏈接作為種子鏈接交給爬蟲(chóng)。分析方法主要以人工觀測(cè)為主,以程序分析為輔。通過(guò)觀察一級(jí)網(wǎng)頁(yè)URL規(guī)律,查看網(wǎng)頁(yè)源碼,再設(shè)計(jì)抽取二級(jí)URL的計(jì)算機(jī)程序,利用程序自動(dòng)抽取種子鏈接。

      (3) 定向抓取網(wǎng)頁(yè)

      抓取網(wǎng)頁(yè)的目的是把主題相關(guān)的網(wǎng)頁(yè)下載到本地磁盤(pán)。爬蟲(chóng)是一種能夠從互聯(lián)網(wǎng)上自動(dòng)抓取網(wǎng)頁(yè)并下載到本地的程序,這種程序的輸入是一些URL鏈接,這些鏈接也稱之為種子,爬蟲(chóng)抓取種子網(wǎng)頁(yè)的結(jié)果是將所有相關(guān)目標(biāo)網(wǎng)頁(yè)下載到本地磁盤(pán)中。

      (4) 分析并抽取網(wǎng)頁(yè)內(nèi)容到本地

      將網(wǎng)頁(yè)中無(wú)規(guī)則的數(shù)據(jù)規(guī)范地保存到本地文件中,數(shù)據(jù)保存采取統(tǒng)一的格式,使其能夠存入數(shù)據(jù)庫(kù)并建立全文索引。

      (5) 存入數(shù)據(jù)庫(kù)并建立索引

      格式化的數(shù)據(jù)不能僅存儲(chǔ)在文本文件中,否則提取數(shù)據(jù)的開(kāi)銷非常大。將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,使用數(shù)據(jù)庫(kù)統(tǒng)一管理所有數(shù)據(jù),這樣訪問(wèn)速度與安全性也大大增強(qiáng)。搜索引擎中數(shù)據(jù)準(zhǔn)備過(guò)程中最關(guān)鍵的技術(shù)就是建立索引,用戶查詢首先訪問(wèn)的是索引而不是數(shù)據(jù)庫(kù),通過(guò)索引查找關(guān)鍵詞然后返回結(jié)果文檔的數(shù)據(jù)庫(kù)ID,再到數(shù)據(jù)庫(kù)中查找具體記錄。

      數(shù)據(jù)準(zhǔn)備層的任務(wù)集中于數(shù)據(jù)采集、預(yù)處理、數(shù)據(jù)存儲(chǔ)以及索引。這一層的活動(dòng)對(duì)用戶不可見(jiàn),最終的產(chǎn)物是保存主題相關(guān)結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫(kù)以及這些數(shù)據(jù)上的倒排索引。

      1.2 提供查詢服務(wù)層

      查詢服務(wù)層首先將用戶的查詢字符串轉(zhuǎn)換為可識(shí)別的對(duì)象,并進(jìn)行預(yù)處理,然后發(fā)送給相應(yīng)的查詢方法處理,最后返回與查詢字符串匹配的數(shù)據(jù)對(duì)象列表。要得到最后的數(shù)據(jù)對(duì)象列表實(shí)際經(jīng)過(guò)2次查詢,第一次查詢倒排索引得到所有相關(guān)文檔ID,這次查詢的時(shí)間復(fù)雜度是O(1),因?yàn)榈古潘饕脑~典結(jié)構(gòu)多為哈希表。第二次查詢將文檔ID發(fā)送至數(shù)據(jù)庫(kù)引擎,根據(jù)文檔ID查詢文檔的全部信息,并且將所有查詢到的文檔以對(duì)象的方式返回。

      1.3 前臺(tái)交互層

      前臺(tái)交互層的重點(diǎn)主要是加強(qiáng)用戶輸入和輸出的體驗(yàn),主要包含兩個(gè)方面:一是隨著用戶按鍵自動(dòng)彈出提示關(guān)鍵字列表;二是直接展示查詢結(jié)果詳細(xì)信息。列表提示功能使用Ajax異步響應(yīng),當(dāng)onkeyup事件發(fā)生后,向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送模糊查詢SQL語(yǔ)句,將查詢結(jié)果列表返回給JavaScript代碼,JavaScript修改dom將提示列表展示在搜索框下面。查詢結(jié)果顯示數(shù)據(jù)要直接,例如查詢數(shù)碼產(chǎn)品的結(jié)果中,產(chǎn)品圖片和參數(shù)直接顯示在頁(yè)面上,技術(shù)上同樣是利用Ajax技術(shù)減少延時(shí)來(lái)增加用戶體驗(yàn)。

      2 Web垂直搜索引擎具體實(shí)現(xiàn)

      下面基于以上實(shí)現(xiàn)過(guò)程在Java平臺(tái)上構(gòu)建查詢手機(jī)相關(guān)信息的Web垂直搜索引擎,構(gòu)建過(guò)程分別按照?qǐng)D1中的3層進(jìn)行實(shí)現(xiàn),并對(duì)關(guān)鍵技術(shù)和實(shí)現(xiàn)原理進(jìn)行總結(jié)和描述。

      2.1 數(shù)據(jù)準(zhǔn)備層實(shí)現(xiàn)

      (1) 選擇主題信息來(lái)源網(wǎng)站和網(wǎng)頁(yè)。根據(jù)選擇主題網(wǎng)站的原則,最終確定選擇太平洋電腦網(wǎng)(http://www.pconline.com.cn/)作為手機(jī)信息數(shù)據(jù)的來(lái)源網(wǎng)站,數(shù)據(jù)源網(wǎng)站可以有多個(gè)。作為一個(gè)綜合性IT網(wǎng)站,手機(jī)頻道的一級(jí)URL頁(yè)面為:

      http://product.pconline.com.cn/mobile/list.shtml

      (2) 網(wǎng)站和網(wǎng)頁(yè)內(nèi)容分析。通過(guò)查看一級(jí)URL頁(yè)面源碼,并且分析網(wǎng)站URL鏈接規(guī)律,得出手機(jī)信息數(shù)據(jù)所在的URL地址規(guī)格,如下所示:

      手機(jī)信息:http://product.pconline.com.cn/mobile/品牌/編號(hào).html。

      手機(jī)圖片:http://img.pconline.com.cn/images/product/編號(hào)

      確定URL規(guī)格的目的是為了確定抓取哪些URL規(guī)格的頁(yè)面。獲取所有手機(jī)品牌的URL鏈接后將這些鏈接作為種子,送給爬蟲(chóng)抓取。

      (3) 定向抓取網(wǎng)頁(yè)。爬蟲(chóng)的輸入是待抓取URL種子鏈接,而爬蟲(chóng)抓取的結(jié)果就是將預(yù)定抓取的HTML和圖片等資源下載到本地磁盤(pán)。本次開(kāi)發(fā)使用開(kāi)源爬蟲(chóng)框架Heritrix[9],它是一個(gè)開(kāi)源的Java爬蟲(chóng)框架,它保留了各種各樣的配置接口用于定制和擴(kuò)展爬蟲(chóng)的功能,為了能夠準(zhǔn)確抓取目標(biāo)資源,從官方文檔中了解Heritrix本身運(yùn)行機(jī)制并進(jìn)行配置和定制。

      (4) 分析并抽取網(wǎng)頁(yè)內(nèi)容到本地抓取到的原始網(wǎng)頁(yè)和圖片不能被直接利用,需要將網(wǎng)頁(yè)中的有用數(shù)據(jù)抽取出來(lái)并以一定的格式保存起來(lái),這個(gè)過(guò)程可以稱之為結(jié)構(gòu)化數(shù)據(jù)提取。每一個(gè)有效的HTML文件都對(duì)應(yīng)一個(gè)txt文件,txt文件的內(nèi)容和文件名稱都有固定的結(jié)構(gòu)。本次開(kāi)發(fā)中將文件名規(guī)范為這樣的格式:“手機(jī)名?型號(hào)?時(shí)間字符串.txt”。txt文件的內(nèi)容格式如下:

      原始網(wǎng)頁(yè)URL

      品牌名(如華為)

      價(jià)格

      屬性名1:值1(如操作系統(tǒng):android2.2)…

      ============================

      產(chǎn)品圖片編碼后的文件名

      結(jié)構(gòu)化提取包含3個(gè)過(guò)程:一個(gè)是文件的I/O操作,此操作可以使用Java.io包實(shí)現(xiàn);另一個(gè)是從HTML網(wǎng)頁(yè)中提取數(shù)據(jù),此操作可以使用開(kāi)源解析軟件實(shí)現(xiàn);第三個(gè)過(guò)程是對(duì)圖片進(jìn)行轉(zhuǎn)存處理,這個(gè)過(guò)程的目的是將手機(jī)信息和圖片名稱進(jìn)行映射,新圖片名將原圖片名經(jīng)過(guò)MD5編碼后得到。HTML元素之間是以分層嵌套的結(jié)構(gòu)組織在一起的,HTML文檔的這種結(jié)構(gòu)稱為HTML文檔樹(shù)。本次開(kāi)發(fā)中使用開(kāi)源HTML解析庫(kù)HtmlParser[10],使用這個(gè)庫(kù)可以方便快速地從HTML網(wǎng)頁(yè)中提取標(biāo)簽節(jié)點(diǎn),文本節(jié)點(diǎn)和和屬性節(jié)點(diǎn)的值。同樣,在開(kāi)發(fā)過(guò)程中使用該解析包需要了解其API和調(diào)用機(jī)制,這些內(nèi)容來(lái)源于官方文檔。

      (5) 存入數(shù)據(jù)庫(kù)并建立索引。磁盤(pán)中的數(shù)據(jù)文件是結(jié)構(gòu)化數(shù)據(jù),但是仍然不能直接作為查詢的直接數(shù)據(jù)源,其原因在于磁盤(pán)I/O速度較慢。故而將這些文件的信息存入關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)表的字段對(duì)應(yīng)文件內(nèi)容結(jié)構(gòu)的字段,每一個(gè)文件的數(shù)據(jù)都對(duì)應(yīng)表的一條記錄。在查詢數(shù)據(jù)庫(kù)時(shí)按照產(chǎn)品的主關(guān)鍵字(如ID號(hào))查詢,查詢效率較高。但是用戶的查詢是若干關(guān)鍵詞,實(shí)際是字符串格式,如果直接將查詢關(guān)鍵詞放入SQL語(yǔ)句中,向數(shù)據(jù)庫(kù)發(fā)送模糊查詢匹配關(guān)鍵詞,那么對(duì)于成千上萬(wàn)的記錄來(lái)說(shuō)效率非常低。所以,并不能直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢關(guān)鍵詞的模糊查詢,而首先將查詢發(fā)送給倒排索引進(jìn)行查詢。

      倒排索引一種面向詞匯的查找結(jié)構(gòu),通常使用哈希表存儲(chǔ),故查詢效率非常高。倒排索引包括兩個(gè)部分:一個(gè)部分是詞典;另一個(gè)部分是倒排列表。建立索引的過(guò)程中,首先要使用分詞程序?qū)κ謾C(jī)信息文本文件分詞建立詞典,每個(gè)詞典項(xiàng)中包含一個(gè)指向?qū)?yīng)倒排列表的指針,倒排列表由若干倒排項(xiàng)組成,倒排項(xiàng)存儲(chǔ)的是包含該詞匯的文檔屬性(文檔ID,詞頻,單詞在該文檔中出現(xiàn)的位置)。

      用戶的查詢首先由同樣的分詞程序切割為若干詞匯,然后查詢?cè)~典找出對(duì)應(yīng)倒排列表,按照某種規(guī)則對(duì)倒排列表進(jìn)行合并,然后將最后的文檔列表ID發(fā)送給數(shù)據(jù)庫(kù)查詢整個(gè)文檔信息,進(jìn)而將數(shù)據(jù)庫(kù)的返回結(jié)果展示給用戶。綜上,用戶的查詢處理過(guò)程為:“查詢索引”→“獲取每個(gè)相關(guān)文檔的數(shù)據(jù)庫(kù)ID”→“查詢數(shù)據(jù)庫(kù)”→“返回給用戶”。這種查詢機(jī)制決定了必須先將手機(jī)信息存儲(chǔ)在數(shù)據(jù)庫(kù),然后建立索引,構(gòu)建索引和執(zhí)行查詢的機(jī)理如圖2所示。

      本次開(kāi)發(fā)中使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),使用開(kāi)源Java全文檢索工具包Lucene建立索引[11],使用基于詞庫(kù)的字符串匹配分詞模式,以正向最大匹配為分詞算法,配合極易中文分詞組件進(jìn)行分詞?;谠~庫(kù)的分詞原理是使用正向最大匹配算法掃描待分詞文本,將掃描出的詞匯與詞庫(kù)中的詞進(jìn)行比對(duì),按照一定的匹配粒度去判別該詞匯是否被切分出來(lái)加入索引中,所以分詞前必須在原有詞庫(kù)基礎(chǔ)上增加主題相關(guān)的詞匯作為詞庫(kù)的一部分,開(kāi)發(fā)中首先解析所有txt文件名,將所有手機(jī)名稱和不同的型號(hào)解析出來(lái)作為詞匯單獨(dú)存儲(chǔ)在一個(gè)文本文件中,通過(guò)簡(jiǎn)單的配置即可將文件的詞匯加入到極易分詞的詞庫(kù)中,選用極易分詞組件的另一個(gè)原因是它實(shí)現(xiàn)了Lucene標(biāo)準(zhǔn)分詞解析器的接口,從而可以直接整合進(jìn)Lucene[12]。對(duì)于查詢字符串必須使用同樣的分詞程序去分詞,以同樣的規(guī)則切分出待查詢?cè)~匯,在索引的詞典中查詢是否存在該詞匯,如果存在則返回該詞匯對(duì)應(yīng)的倒排列表,否則返回空,對(duì)于多詞匯查找的處理是根據(jù)邏輯運(yùn)算對(duì)倒排列表進(jìn)行合并后再返回。倒排列表中的文檔排序模型是經(jīng)典的向量空間模型,該模型以文檔的TF*IDF值為向量的特征,實(shí)際參數(shù)可以在Lucene中按需設(shè)置。

      圖2 索引與查詢機(jī)理圖

      2.2 提供查詢服務(wù)層實(shí)現(xiàn)

      提供查詢服務(wù)作為一個(gè)中間層,在整個(gè)搜索引擎中起著非常重要的連接作用,它接收用戶的查詢字符串并預(yù)處理,然后在索引和數(shù)據(jù)庫(kù)中查詢相關(guān)文檔并返回給用戶。

      通過(guò)圖2可知搜索模塊和分詞模塊一起提供查詢服務(wù),實(shí)驗(yàn)中分詞模塊與建立索引所用分詞的模塊有相同的配置,而搜索模塊承擔(dān)查詢索引和數(shù)據(jù)庫(kù)的任務(wù),由Lucene提供的搜索模塊實(shí)現(xiàn),開(kāi)發(fā)中這2個(gè)任務(wù)分別由2個(gè)方法實(shí)現(xiàn),它們是查詢服務(wù)類中的2個(gè)方法,查詢索引方法的參數(shù)是查詢關(guān)鍵詞對(duì)象,返回的是相關(guān)文檔列表對(duì)象,查詢數(shù)據(jù)庫(kù)方法的參數(shù)是整型的文檔ID,返回文檔對(duì)象,如圖3所示。

      2.3 前臺(tái)交互層實(shí)現(xiàn)

      前臺(tái)交互是直接面向用戶的應(yīng)用層,為了增加用戶在輸入和輸出上的體驗(yàn),分別實(shí)現(xiàn)2種功能:一是用戶每次敲擊按鍵時(shí)都會(huì)提示關(guān)鍵詞列表;二是結(jié)果列表頁(yè)面上直接展示主要結(jié)果,包括圖片和其他重要屬性。開(kāi)發(fā)中,列表提示的數(shù)據(jù)來(lái)源于已經(jīng)抽取得到的手機(jī)相關(guān)詞匯,將這些詞匯存入MySQL數(shù)據(jù)庫(kù)的一張表里,針對(duì)該表設(shè)計(jì)一個(gè)查詢方法,參數(shù)是用戶按鍵后提交的當(dāng)前字符串,實(shí)現(xiàn)機(jī)理是向該表發(fā)送模糊查詢,返回字符串?dāng)?shù)組(一般規(guī)定提示字符串個(gè)數(shù)不超過(guò)10)。

      圖3 前臺(tái)交互層與提供查詢服務(wù)層交互

      該方法的調(diào)用是通過(guò)用戶觸發(fā)onkeyup事件,隨即以Ajax機(jī)制向服務(wù)器發(fā)送字符串并完成調(diào)用,前端通過(guò)Ajax代碼接收返回的字符串?dāng)?shù)組作為顯示數(shù)據(jù),使用JavaScript改變dom的方式將這些字符串以列表的方式顯示在輸入框的下面。當(dāng)點(diǎn)擊搜索按鈕后,開(kāi)始向服務(wù)器發(fā)送查詢,前臺(tái)交互層與中間層的交互如圖3所示,它們的交互通過(guò)Ajax框架DWR來(lái)完成,這樣有效降低延時(shí),能夠明顯提高用戶體驗(yàn)。用戶查詢的關(guān)鍵字(query)以及每頁(yè)的起始索引號(hào)(startindex)封裝在Request對(duì)象中,直接通過(guò)Ajax發(fā)送給查詢服務(wù)層的SearchServiceImpl對(duì)象的getSearchResults方法,該方法返回的SearchResults對(duì)象包含了相關(guān)文檔ID的列表,然后將文檔的ID作為參數(shù)發(fā)送給getSearchResultById方法查詢數(shù)據(jù)庫(kù),返回文檔全部信息并封裝在SearchResult對(duì)象中,最后將SearchResult對(duì)象返回到前臺(tái)展示給用戶。

      3 結(jié) 論

      實(shí)驗(yàn)中多次查詢的平均時(shí)間在毫秒級(jí),完成了整個(gè)Web垂直搜索引擎的設(shè)計(jì)目標(biāo)。驗(yàn)證了這種實(shí)現(xiàn)過(guò)程的完整性和有效性。提出的三層架構(gòu)面向的是構(gòu)建主題相關(guān)的Web垂直搜索引擎,通過(guò)實(shí)現(xiàn)查詢手機(jī)信息的Web垂直搜索引擎來(lái)提供一種可操作的實(shí)施方案,為成功構(gòu)建其他面向其他主題的Web垂直搜索引擎提供理論依據(jù)和技術(shù)參照。整個(gè)實(shí)現(xiàn)過(guò)程利用了Java平臺(tái)下的優(yōu)秀開(kāi)源軟件包,包含了可定制爬蟲(chóng)Heritrix、網(wǎng)頁(yè)解析庫(kù)HTMLParser、索引及查詢工具包Lucene、Ajax框架DWR、Bean容器Spring以及MySQL數(shù)據(jù)庫(kù),這些開(kāi)源軟件為搜索引擎的實(shí)現(xiàn)提供了強(qiáng)大的支持,對(duì)于這些軟件的具體使用方法和過(guò)程本文沒(méi)有詳細(xì)贅述,而重點(diǎn)討論了構(gòu)建搜索引擎的實(shí)現(xiàn)過(guò)程、技術(shù)要點(diǎn)和方法。

      由于垂直搜索引擎索引數(shù)據(jù)本身就是面向主題的,所以檢索結(jié)果的主題相關(guān)度、正確率必然比通用搜索引擎高,而且展示數(shù)據(jù)的能力更強(qiáng)??v觀現(xiàn)有的研究成果,作者認(rèn)為未來(lái)Web垂直搜索引擎主要的研究方向有以下幾個(gè)方面:

      (1) 結(jié)構(gòu)化數(shù)據(jù)提取自動(dòng)化。爬蟲(chóng)應(yīng)該能夠自動(dòng)發(fā)現(xiàn)、發(fā)掘Web上主題相關(guān)的來(lái)源網(wǎng)站,并能夠自動(dòng)對(duì)網(wǎng)站內(nèi)容評(píng)級(jí),能夠?qū)崟r(shí)監(jiān)控Web主題網(wǎng)站的頁(yè)面變化并更新本地的頁(yè)面,通過(guò)自動(dòng)化的爬蟲(chóng)的監(jiān)控、爬取、抽取與更新操作增強(qiáng)搜索引擎的靈活性。

      (2) 用戶個(gè)性化。個(gè)性化搜索引擎盡管理論上已經(jīng)得到發(fā)展,但是從理論到實(shí)際應(yīng)用還需要繼續(xù)研究,搜索引擎應(yīng)該能夠自動(dòng)識(shí)別用戶種類、意圖,對(duì)用戶的需求進(jìn)行精確預(yù)測(cè),并對(duì)歧義進(jìn)行自動(dòng)矯正,重點(diǎn)在推薦系統(tǒng)、相關(guān)反饋方面進(jìn)行完善。

      (3) 數(shù)據(jù)可靠性。由于垂直搜索引擎的返回結(jié)果大多是領(lǐng)域相關(guān)的內(nèi)容,返回給用戶的結(jié)果應(yīng)該對(duì)用戶負(fù)責(zé),在醫(yī)療、問(wèn)答、新聞、學(xué)術(shù)等領(lǐng)域的返回結(jié)果應(yīng)保證數(shù)據(jù)來(lái)源的準(zhǔn)確性,對(duì)排名靠前的結(jié)果應(yīng)特別進(jìn)行自動(dòng)的審核,保證信息的可靠性。

      本文通訊作者為田玉玲。

      參考文獻(xiàn)

      [1] 劉天嬌,周瑛.淺析近年來(lái)網(wǎng)絡(luò)搜索引擎研究現(xiàn)狀:以2001至2010年為例[J].情報(bào)科學(xué),2012(8):1192?1195.

      [2] 王文鈞,李巍.垂直搜索引擎的現(xiàn)狀與發(fā)展探究[J].情報(bào)科學(xué),2010(3):477?480.

      [3] 王斌.從信息檢索到搜索引擎[J].產(chǎn)品安全與召回,2009(4):38?43.

      [4] BRIN S, PAGE L. The anatomy of a large?scale hypertextual Web search engine [J]. Computer networks and isdn systems, 1998, 30: 107?117.

      [5] CHAKRABARTIA Soumen, VAN DEN BERGB Martin, DOMC Byron. Focused crawling: A new approach to topic?specific Web resource discovery [J]. Computer networks, 1999, 31: 1623?1640.

      [6] ALMPANIDIS G, KOTROPOULOS C, PITAS I. Combining text and link analysis for focused crawling: An application for vertical search engines [J]. Information systems, 2007, 32(6): 886?908.

      [7] CAMBAZOGLU Barla, KARACA Evren, KUCUKYILMAZ Tayfun, et al. Architecture of a grid?enabled Web search engine [J]. Information processing & management, 2007, 43(3): 609?623.

      [8] LIU Tie?yan. Learning to rank for information retrieval [J]. Foundations and trends in information retrieval, 2009, 3: 225?331.

      [9] 白萬(wàn)民,蘇希樂(lè).Heritrix在垂直搜索引擎中的應(yīng)用[J].計(jì)算機(jī)時(shí)代,2011(9):7?9.

      [10] 桂林斌.基于HtmlParser抽取動(dòng)態(tài)異構(gòu)Web信息的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2009,37(7):161?164.

      [11] 張俊,李魯群,周熔.基于Lucene的搜索引擎的研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(6):230?232.

      [12] 黃翼彪.實(shí)現(xiàn)Lucene接口的中文分詞器的比較研究[J].科技信息,2012(12):246?247.

      猜你喜歡
      爬蟲(chóng)
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      善用網(wǎng)絡(luò)爬蟲(chóng)
      基于Django 的分布式爬蟲(chóng)框架設(shè)計(jì)與實(shí)現(xiàn)*
      目前互聯(lián)網(wǎng)中的網(wǎng)絡(luò)爬蟲(chóng)的原理和影響
      網(wǎng)絡(luò)爬蟲(chóng)技術(shù)原理
      誰(shuí)搶走了低價(jià)機(jī)票
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      大數(shù)據(jù)背景下校園輿情的爬蟲(chóng)應(yīng)用研究
      電子制作(2018年2期)2018-04-18 07:13:42
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      定日县| 华池县| 桐乡市| 嘉峪关市| 碌曲县| 玛曲县| 玉山县| 天津市| 阿巴嘎旗| 宾川县| 尚志市| 平塘县| 淮滨县| 清水县| 龙海市| 沁水县| 山丹县| 长兴县| 西峡县| 壶关县| 永修县| 芜湖县| 民和| 日照市| 阳春市| 安徽省| 新河县| 双城市| 三门峡市| 越西县| 罗田县| 右玉县| 滦南县| 吉林市| 南雄市| 长葛市| 新河县| 沅陵县| 图们市| 利辛县| 上高县|