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