焦 蕾,殷鋒社
(陜西工業(yè)職業(yè)技術(shù)學院 陜西 咸陽 712000)
搜索引擎一詞在國內(nèi)外因特網(wǎng)領(lǐng)域被廣泛使用,然而他的含義卻不盡相同。在美國搜索引擎通常指的是基于因特網(wǎng)的搜索引擎,他們通過網(wǎng)絡(luò)機器人程序收集上千萬到幾億個網(wǎng)頁,并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網(wǎng)搜索引擎包括 FirstSearch、Google、HotBot等。在中國,搜索引擎通常指基于網(wǎng)站目錄的搜索服務(wù)或是特定網(wǎng)站的搜索服務(wù)。
搜索引擎是根據(jù)用戶的查詢請求,按照一定算法從索引數(shù)據(jù)中查找返回給用戶。為了保證用戶查找的精度和新鮮度,搜索引擎需要建立并維護一個龐大的索引數(shù)據(jù)庫。一般的搜索引擎由網(wǎng)絡(luò)機器人程序、索引與搜索程序、索引數(shù)據(jù)庫等部分組成。
為了企業(yè)的生存、發(fā)展,企業(yè)必須以市場環(huán)境作支撐,不論依靠傳統(tǒng)營銷模式,還是依靠搜索引擎營銷模式,只要企業(yè)考慮營銷就不得不從宏觀環(huán)境、微觀環(huán)境兩個方面來考慮營銷戰(zhàn)略實施的影響因素[1],如圖1所示。
在整個宏觀環(huán)境中,企業(yè)營銷過程中首要監(jiān)視的第一個因素應(yīng)該是人口,因為市場是由人組成的。其次是與人口因素密切相關(guān)的經(jīng)濟環(huán)境因素,因為市場不僅需要人口,還需要購買力。再者就是人們賴以成長和生活的社會形成了人們的基本信仰、價值觀念和生活準則的社會文化環(huán)境。接下來是決定搜索引擎營銷模式是否存在的技術(shù)環(huán)境,最后是具有政策導(dǎo)向的政治法律環(huán)境。這些因素都是不可控制的,但企業(yè)必須監(jiān)視這些因素的動態(tài)并對此作出反應(yīng)。
圖1 搜索引擎營銷實施影響因素Fig.1 Influence factors of the implementation of search engine marketing
相對于宏觀環(huán)境,企業(yè)在微觀環(huán)境下更能發(fā)揮其主動性。對于那些決定利用搜索引擎進行營銷的企業(yè)來說,競爭對手、搜索引擎供應(yīng)商、瀏覽者、搜索引擎營銷中介是他們在得到目標客戶之前必須考慮的,因為它們影響著其營銷策略的制定及實施。
搜索引擎優(yōu)化[3]簡稱SEO,與搜索引擎定位、搜索引擎排名是同一種工作,指通過對各類搜索引擎如何抓取互聯(lián)網(wǎng)頁面,如何進行索引以及如何確定其對某一特定關(guān)鍵字的搜索結(jié)果排名等技術(shù)的了解,對網(wǎng)站進行優(yōu)化,最終提升網(wǎng)站曝光率的一項技術(shù)。
目前一些企業(yè)網(wǎng)站結(jié)構(gòu)基本由首頁、公司簡介、產(chǎn)品信息、招聘信息、聯(lián)系信息等組成。這樣的網(wǎng)站結(jié)構(gòu)基本上是把網(wǎng)站當作電子化的宣傳冊,并沒有充分發(fā)揮網(wǎng)絡(luò)的互動性。為了彌補這種缺陷,可以對企業(yè)網(wǎng)站進行結(jié)構(gòu)優(yōu)化。
網(wǎng)站內(nèi)部結(jié)構(gòu)如同企業(yè)中的各個職能部門,只有保持部門間的信息傳遞渠道暢通、彼此之間協(xié)調(diào)運作,才會提高整個企業(yè)的運營效率。為了提高網(wǎng)站內(nèi)部之間的相互關(guān)聯(lián)度,需要利用網(wǎng)站內(nèi)部鏈接優(yōu)化[4]技術(shù),與此同時,加上一個FAQ欄目,這是因為企業(yè)通過網(wǎng)站在宣傳產(chǎn)品的過程中,會遇到一些比較常見的問題,企業(yè)如果能夠預(yù)先想到這樣一些問題及其解答,并做成一個專門的頁面,這不僅有利于訪問者了解企業(yè)的產(chǎn)品、促成業(yè)務(wù)合作,同時也為企業(yè)避免了人力資源的浪費。
搜索引擎檢索結(jié)果的主要部分就是網(wǎng)頁的標題和圍繞檢索關(guān)鍵字選取的部分正文,Ifu網(wǎng)站標題也是瀏覽者判斷目標信息相關(guān)與否的關(guān)鍵所在,因此,網(wǎng)頁標題對于搜索引擎至關(guān)重要,是網(wǎng)頁優(yōu)化的重要內(nèi)容,必須仔細選擇網(wǎng)頁的標題。一般來說,應(yīng)該遵循以下原則[5]。
首先,不同內(nèi)容的網(wǎng)頁選擇不同的標題。不要將網(wǎng)站所有頁面設(shè)成同一個標題,網(wǎng)頁標題應(yīng)該圍繞該頁的內(nèi)容進行編排,盡量反映該頁的主題內(nèi)容。這樣可以提高瀏覽者檢索到信息與查詢條件的匹配度,增強瀏覽者對網(wǎng)站的信任度;同時,也保證了搜索引擎在網(wǎng)站上獲取信息的質(zhì)量,根據(jù)Google的相關(guān)度得分法,這樣的網(wǎng)站會得一個好的分數(shù),可以增加該網(wǎng)站的排名級別。另外,為了保證整個網(wǎng)站頁面不同標題的統(tǒng)一性及提高企業(yè)在網(wǎng)站上可識別性,可以在不同頁面的標題中加入統(tǒng)一的稱謂。
其次,在標題中出現(xiàn)關(guān)鍵字。在標題中出現(xiàn)關(guān)鍵字主要是為了提升搜索引擎檢索結(jié)果的排名。強調(diào)在主要網(wǎng)頁標題中設(shè)置盡可能豐富的關(guān)鍵字。
利用Java技術(shù)對搜索引擎的3個主要部件 (網(wǎng)絡(luò)蜘蛛、索引器、搜索器)做了實現(xiàn),能完成搜索引擎的基本功能。下面對在系統(tǒng)設(shè)計中用到的技術(shù)及具體的實現(xiàn)技術(shù)逐一進行介紹。
在實現(xiàn)搜索引擎的時候用到了以下幾個軟件:
1)Java 2 Platform Standard Edition 5.0(Java程序開發(fā)包)
下載地址:http :l’ava.sun.com/j2se/1.5.0/download.}sp
2)Lucene 1.4.3(實現(xiàn)索引和搜索的Java類庫)
下載地址:http:/lapache.}ustdn.org/luceneJaavaL
3)Tomcat 5.5(Servlet/JSP 容器)
下載地址:http:LLtomcat.apache.org/download-SS.cgi
上述3個程序包在相關(guān)的網(wǎng)頁上均有詳細的安裝及使用方法,在此不再贅述?,F(xiàn)主要對在實現(xiàn)搜索引擎是用到的相關(guān)Java技術(shù)做一簡要介紹。
3.1.1 Java的Internet連接技術(shù)
網(wǎng)絡(luò)蜘蛛為了抓取網(wǎng)頁,首先要能夠跟Web服務(wù)器通信,進行網(wǎng)頁的下載。Java提供了許多支持Internet連接的類。一種是套接字類,另一種是與URL地址一起工作的URL類。
1)使用套接字類
網(wǎng)絡(luò)上的每一臺計算機都有很多套接字輔助計算機程序生效,這些套接字叫端口,它們都編了號。在任一臺計算機上,服務(wù)器程序必須指定端口號用于“傾聽”每個連接,而客戶端程序必須指定端口號用于請求連接。多個客戶端能夠連接到同一個服務(wù)器端口,但是,每一時刻只有一個服務(wù)器程序能偵聽同樣的服務(wù)器端口。HTTP的默認端口為80,是一個非常重要的端口。
2)使用 URL 類
URL類允許解析URL,或者是將其拆成各個組成部分。一旦為指定的URL創(chuàng)建了一個URL對象,就很容易將該URL解析成主機名和路徑。URL類還具有打開某個地址連接的能力,以及從該URL檢索信息的能力。
3.1.2 Java中的中文處理
程序的開發(fā)過程中,在網(wǎng)頁抓取、索引、搜索結(jié)果輸出這幾個部分都遇到了漢字亂碼的現(xiàn)象,經(jīng)過分析發(fā)現(xiàn)問題主要出現(xiàn)在字符編碼上。目前Java已經(jīng)能夠很好的支持漢字,但前提是正確設(shè)置編碼方式。
3.1.3 Java的多線程機制
本研究使用丁酸鈉干預(yù),結(jié)果顯示,丁酸鈉組SD大鼠放療后,放射性腸損傷動物模型成功率只有83.3%,顯著低于模型組的100%成功率,提示丁酸鈉有可能發(fā)揮保護腸黏膜的功能。賴衍宗等[8]在結(jié)腸炎的小鼠模型中發(fā)現(xiàn)丁酸鈉通過促進Th1/Th2/Th17類細胞因子平衡,減輕模型小鼠腸黏膜的損傷發(fā)揮治療作用。本研究的腸黏膜形態(tài)學檢測顯示,丁酸鈉組黏膜絨毛高度和黏膜厚度顯著高于模型組,也證明丁酸鈉可以保護放射治療導(dǎo)致的腸損傷。
網(wǎng)頁抓取、索引、搜索都應(yīng)以多線程的機制運行,這樣能大幅地提供工作效率。一個線程的工作是在后臺執(zhí)行程序的一些部分,而程序的其它部分能夠繼續(xù)運行。當用Java建立一個線程時,必須明確指出后臺執(zhí)行的代碼,此代碼包含在Java線程的run方法中。Java通過兩種方法操作多線程。
執(zhí)行多線程的第一種方法是繼承Thread對象,Java用Thread對象來封裝線程,通過覆蓋Thread類的run方法來為特定線程提供代碼。由于Java不支持多繼承,當一個類需要繼承其它類時,此種方法就不適用。執(zhí)行多線程的第二種方式是執(zhí)行由Java提供的Runnable接口,并在本類中建立一個:un方法。由于Java可以執(zhí)行多個接口,所以它沒有第一種方法的限制.下面對上述兩種方法做一個簡要介紹:
1)繼承 Thread類
通過Java的extends關(guān)鍵字直接繼承Thread類來建立一個線程,這種方式允許你建立一個自包含線程對象,也就是說此對象中不僅包含run方法而且包含控制run方法執(zhí)行的其它方法。示列如下:
2)執(zhí)行 Runnable接口
Java建立線程的第二種方法是執(zhí)行Runnable接口,Java接口本身不做實際的工作,它僅定義完成工作的方法的原型。當執(zhí)行一個接口時必須包含此接口的方法,對Runnable接口來說要包含run方法的代碼。如下代碼完成與上列相同的功能,Runnable接口用于代替Thread類。
3.1.4 JDBC應(yīng)用
如果網(wǎng)絡(luò)蜘蛛要訪問大量的網(wǎng)站,就必須有一種有效的方式來存儲驅(qū)動Web Spider的站點隊列。這些隊列用來管理Web Spider必須維護的大量的網(wǎng)頁列表。為了管理如此大的列表需要用到DBMS(Database Management System)。在Java中使用 JDBC<Java Database Connectivity)提交 SQL(Structured Query Language)命令來操作數(shù)據(jù)庫。
利用Java構(gòu)建Spider程序是一個非常不錯的選擇,Java對HTTP協(xié)議具有內(nèi)建的支持,而WEB上的信息大部分都是通過HTTP進行傳輸?shù)?。同時Java還具有一個內(nèi)建的HTML解析器,在編寫Web Spider程序的過程中構(gòu)造了幾個相關(guān)的接口和類下面逐一對其進行介紹。
1)Spider類
Spider類有3個作用。首先它作為Spider的接口提供了使用Spider的方法;此外,Spider對象管理線程池并且向啟動Spider的對象報告Spider發(fā)現(xiàn)的頁面。最后,確定Spider的工作何時完成也是Spider。Spider類允許兩個附加的類來定制化Spider的操作,這兩個類由ISpiderReportable和IWorkload Storable兩個接口定義。
2)ISpiderReportable接口
ISpiderReportable接口定義T幾類事件,Spider將這些事件送回到它的控制器,在控制器中再定義對這些事件的處理方法。執(zhí)行ISpiderReportable接口的類取回Spider找到的頁面,然后對這些頁面進行處理。
3)IWorkloadStoralbe接口
這個接口用于定制化Spider的行為。Spider的一個主要任務(wù)是組織要訪問的站點的列表,這些列表被稱為作業(yè)(workload)。這個接口定義一個對象,它能從作業(yè)中存儲和取回頁面。
4)SpiderWorker類
Spider程序下載Web站點并將頁面上的鏈接添加到作業(yè)中,這個基本任務(wù)由SpiderWorker來完成。Spider程序啟動的時候,建立一個SpiderWorker類池,相當于一個線程池,每個線程同時處理Spider找到的頁面。
5)SpiderDone 類
由于有多個同步運行的線程,所以很難知道什么時候Spider的工作已經(jīng)完成。這樣就需要一個對象來跟蹤還在運行的線程的數(shù)量,當數(shù)量變?yōu)榱銜r就意味著Spider的工作結(jié)束。SpiderDone類就是為此目的而引入的。
Lucene[6]是一個高性能,易于擴展的 IR<Information Retrieval)Java類庫,可以利用其中的Java類輕松地在應(yīng)用程序中增加索引和搜索功能。Lucene完全用Java實現(xiàn),具有良好的跨平臺性,是ApacheJakarta項目中的一個子項目。
Lucene允許添加索引和搜索功能到應(yīng)用程序中,它能索引并搜索任意能轉(zhuǎn)換為文本格式的數(shù)據(jù),Lucene并不關(guān)心數(shù)據(jù)的來源、格式、甚至它的語言,只要它能轉(zhuǎn)換成文本。遠程WEB服務(wù)器上的Web頁面,存放在本地文件系統(tǒng)中的文檔,簡單文本文件,MS-Word文檔,HTML或PDF文件,以至于其它任何能夠抽取出文本信息的文件格式。同時Lucene能夠索引存儲在數(shù)據(jù)庫中的數(shù)據(jù),給予用戶許多數(shù)據(jù)庫都不能提供的全文檢索功能。
Lucene[7]提供了一些核心類用于在應(yīng)用程序中增加索引和搜索功能。Lucene的API接口設(shè)計的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫的表今記錄今字段,所以很多傳統(tǒng)應(yīng)用的文件、數(shù)據(jù)庫等都可以比較方便的映射到Lucene的存儲結(jié)構(gòu)/接口中。總體上看可以把Lucene當成一個支持全文索引的數(shù)據(jù)庫系統(tǒng)。
由于許多技術(shù)型搜索引擎頻繁地改變其算法以保持公平性,造成其搜索結(jié)果排名順序經(jīng)常變動,因此企業(yè)要不斷的跟蹤這類搜索引擎的技術(shù)變化,及時作出相應(yīng)的調(diào)整,以保持自己在搜索引擎中的優(yōu)勢地位。
雖然對搜索引擎的基本功能進行了實現(xiàn),但還存在許多的不足,只能用作理論研究,離實用還有很長的距離。文中構(gòu)建的網(wǎng)絡(luò)蜘蛛程序利用隊列和多線程機制,具有較高的效率,但只能抓取簡單的HTML頁面[8],對由JSP,ASP等生成的動態(tài)頁面還顯得無能為力,也不支持CSS (Cascading Style Sheets,層疊樣式表)頁面等等。在索引部分因為借用了Lucene軟件包中的一個HTML解析器,雖然經(jīng)過改進能較好地支持中文,但在索引時還是會經(jīng)常報錯,主要是這個HTML解析器只支持HTML的一個子集。
[1]土淡.搜索引擎營銷研究及“ED”公司搜索引擎營銷實施[D].成都:電子科技大學,2001.
[2]喬冬梅.搜索引擎現(xiàn)狀與發(fā)展研究 [D].鄭州:鄭州大學,2002.
[3]劉建元.我國中小企業(yè)網(wǎng)絡(luò)營銷策略[D].長沙:中南林學院,2002.
[4]王正平.現(xiàn)代企業(yè)網(wǎng)絡(luò)營銷策略思考[D].武漢:華中師范大學,2001.
[5]Rusty E,Harold.Java Network Programming,3rdEdition[M].O’Reillv,2004.
[6]Java2 Platform Standard Edition 5.0 API Specification[M].Sun Microsystems,2004.
[7]吳代文,郭軍軍.基于Lucene站內(nèi)全文檢索系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2011(6):42-44,48.
WU Dai-wen,Guo Jun-jun.Design and implemention of fulltext retrieval system in website based on Lucene[J].Modern Electronics Technique,2011(6):42-44,48.
[8]張俊蘭,都欣娟.基于ASP技術(shù)的數(shù)據(jù)庫連接應(yīng)用探討[J].電子科技,2010(8):115-117.
ZHANG Jun-lan,DU Xin-juan.Application ofdatabase connection based on ASP[J].Electronic Science and Technology,2010(8):115-117.