焦 蕾,殷鋒社
(陜西工業職業技術學院 陜西 咸陽 712000)
搜索引擎一詞在國內外因特網領域被廣泛使用,然而他的含義卻不盡相同。在美國搜索引擎通常指的是基于因特網的搜索引擎,他們通過網絡機器人程序收集上千萬到幾億個網頁,并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網搜索引擎包括 FirstSearch、Google、HotBot等。在中國,搜索引擎通常指基于網站目錄的搜索服務或是特定網站的搜索服務。
搜索引擎是根據用戶的查詢請求,按照一定算法從索引數據中查找返回給用戶。為了保證用戶查找的精度和新鮮度,搜索引擎需要建立并維護一個龐大的索引數據庫。一般的搜索引擎由網絡機器人程序、索引與搜索程序、索引數據庫等部分組成。
為了企業的生存、發展,企業必須以市場環境作支撐,不論依靠傳統營銷模式,還是依靠搜索引擎營銷模式,只要企業考慮營銷就不得不從宏觀環境、微觀環境兩個方面來考慮營銷戰略實施的影響因素[1],如圖1所示。
在整個宏觀環境中,企業營銷過程中首要監視的第一個因素應該是人口,因為市場是由人組成的。其次是與人口因素密切相關的經濟環境因素,因為市場不僅需要人口,還需要購買力。再者就是人們賴以成長和生活的社會形成了人們的基本信仰、價值觀念和生活準則的社會文化環境。接下來是決定搜索引擎營銷模式是否存在的技術環境,最后是具有政策導向的政治法律環境。這些因素都是不可控制的,但企業必須監視這些因素的動態并對此作出反應。

圖1 搜索引擎營銷實施影響因素Fig.1 Influence factors of the implementation of search engine marketing
相對于宏觀環境,企業在微觀環境下更能發揮其主動性。對于那些決定利用搜索引擎進行營銷的企業來說,競爭對手、搜索引擎供應商、瀏覽者、搜索引擎營銷中介是他們在得到目標客戶之前必須考慮的,因為它們影響著其營銷策略的制定及實施。
搜索引擎優化[3]簡稱SEO,與搜索引擎定位、搜索引擎排名是同一種工作,指通過對各類搜索引擎如何抓取互聯網頁面,如何進行索引以及如何確定其對某一特定關鍵字的搜索結果排名等技術的了解,對網站進行優化,最終提升網站曝光率的一項技術。
目前一些企業網站結構基本由首頁、公司簡介、產品信息、招聘信息、聯系信息等組成。這樣的網站結構基本上是把網站當作電子化的宣傳冊,并沒有充分發揮網絡的互動性。為了彌補這種缺陷,可以對企業網站進行結構優化。
網站內部結構如同企業中的各個職能部門,只有保持部門間的信息傳遞渠道暢通、彼此之間協調運作,才會提高整個企業的運營效率。為了提高網站內部之間的相互關聯度,需要利用網站內部鏈接優化[4]技術,與此同時,加上一個FAQ欄目,這是因為企業通過網站在宣傳產品的過程中,會遇到一些比較常見的問題,企業如果能夠預先想到這樣一些問題及其解答,并做成一個專門的頁面,這不僅有利于訪問者了解企業的產品、促成業務合作,同時也為企業避免了人力資源的浪費。
搜索引擎檢索結果的主要部分就是網頁的標題和圍繞檢索關鍵字選取的部分正文,Ifu網站標題也是瀏覽者判斷目標信息相關與否的關鍵所在,因此,網頁標題對于搜索引擎至關重要,是網頁優化的重要內容,必須仔細選擇網頁的標題。一般來說,應該遵循以下原則[5]。
首先,不同內容的網頁選擇不同的標題。不要將網站所有頁面設成同一個標題,網頁標題應該圍繞該頁的內容進行編排,盡量反映該頁的主題內容。這樣可以提高瀏覽者檢索到信息與查詢條件的匹配度,增強瀏覽者對網站的信任度;同時,也保證了搜索引擎在網站上獲取信息的質量,根據Google的相關度得分法,這樣的網站會得一個好的分數,可以增加該網站的排名級別。另外,為了保證整個網站頁面不同標題的統一性及提高企業在網站上可識別性,可以在不同頁面的標題中加入統一的稱謂。
其次,在標題中出現關鍵字。在標題中出現關鍵字主要是為了提升搜索引擎檢索結果的排名。強調在主要網頁標題中設置盡可能豐富的關鍵字。
利用Java技術對搜索引擎的3個主要部件 (網絡蜘蛛、索引器、搜索器)做了實現,能完成搜索引擎的基本功能。下面對在系統設計中用到的技術及具體的實現技術逐一進行介紹。
在實現搜索引擎的時候用到了以下幾個軟件:
1)Java 2 Platform Standard Edition 5.0(Java程序開發包)
下載地址:http :l’ava.sun.com/j2se/1.5.0/download.}sp
2)Lucene 1.4.3(實現索引和搜索的Java類庫)
下載地址:http:/lapache.}ustdn.org/luceneJaavaL
3)Tomcat 5.5(Servlet/JSP 容器)
下載地址:http:LLtomcat.apache.org/download-SS.cgi
上述3個程序包在相關的網頁上均有詳細的安裝及使用方法,在此不再贅述。現主要對在實現搜索引擎是用到的相關Java技術做一簡要介紹。
3.1.1 Java的Internet連接技術
網絡蜘蛛為了抓取網頁,首先要能夠跟Web服務器通信,進行網頁的下載。Java提供了許多支持Internet連接的類。一種是套接字類,另一種是與URL地址一起工作的URL類。
1)使用套接字類
網絡上的每一臺計算機都有很多套接字輔助計算機程序生效,這些套接字叫端口,它們都編了號。在任一臺計算機上,服務器程序必須指定端口號用于“傾聽”每個連接,而客戶端程序必須指定端口號用于請求連接。多個客戶端能夠連接到同一個服務器端口,但是,每一時刻只有一個服務器程序能偵聽同樣的服務器端口。HTTP的默認端口為80,是一個非常重要的端口。
2)使用 URL 類
URL類允許解析URL,或者是將其拆成各個組成部分。一旦為指定的URL創建了一個URL對象,就很容易將該URL解析成主機名和路徑。URL類還具有打開某個地址連接的能力,以及從該URL檢索信息的能力。
3.1.2 Java中的中文處理
程序的開發過程中,在網頁抓取、索引、搜索結果輸出這幾個部分都遇到了漢字亂碼的現象,經過分析發現問題主要出現在字符編碼上。目前Java已經能夠很好的支持漢字,但前提是正確設置編碼方式。
3.1.3 Java的多線程機制
本研究使用丁酸鈉干預,結果顯示,丁酸鈉組SD大鼠放療后,放射性腸損傷動物模型成功率只有83.3%,顯著低于模型組的100%成功率,提示丁酸鈉有可能發揮保護腸黏膜的功能。賴衍宗等[8]在結腸炎的小鼠模型中發現丁酸鈉通過促進Th1/Th2/Th17類細胞因子平衡,減輕模型小鼠腸黏膜的損傷發揮治療作用。本研究的腸黏膜形態學檢測顯示,丁酸鈉組黏膜絨毛高度和黏膜厚度顯著高于模型組,也證明丁酸鈉可以保護放射治療導致的腸損傷。
網頁抓取、索引、搜索都應以多線程的機制運行,這樣能大幅地提供工作效率。一個線程的工作是在后臺執行程序的一些部分,而程序的其它部分能夠繼續運行。當用Java建立一個線程時,必須明確指出后臺執行的代碼,此代碼包含在Java線程的run方法中。Java通過兩種方法操作多線程。
執行多線程的第一種方法是繼承Thread對象,Java用Thread對象來封裝線程,通過覆蓋Thread類的run方法來為特定線程提供代碼。由于Java不支持多繼承,當一個類需要繼承其它類時,此種方法就不適用。執行多線程的第二種方式是執行由Java提供的Runnable接口,并在本類中建立一個:un方法。由于Java可以執行多個接口,所以它沒有第一種方法的限制.下面對上述兩種方法做一個簡要介紹:
1)繼承 Thread類
通過Java的extends關鍵字直接繼承Thread類來建立一個線程,這種方式允許你建立一個自包含線程對象,也就是說此對象中不僅包含run方法而且包含控制run方法執行的其它方法。示列如下:

2)執行 Runnable接口
Java建立線程的第二種方法是執行Runnable接口,Java接口本身不做實際的工作,它僅定義完成工作的方法的原型。當執行一個接口時必須包含此接口的方法,對Runnable接口來說要包含run方法的代碼。如下代碼完成與上列相同的功能,Runnable接口用于代替Thread類。


3.1.4 JDBC應用
如果網絡蜘蛛要訪問大量的網站,就必須有一種有效的方式來存儲驅動Web Spider的站點隊列。這些隊列用來管理Web Spider必須維護的大量的網頁列表。為了管理如此大的列表需要用到DBMS(Database Management System)。在Java中使用 JDBC<Java Database Connectivity)提交 SQL(Structured Query Language)命令來操作數據庫。
利用Java構建Spider程序是一個非常不錯的選擇,Java對HTTP協議具有內建的支持,而WEB上的信息大部分都是通過HTTP進行傳輸的。同時Java還具有一個內建的HTML解析器,在編寫Web Spider程序的過程中構造了幾個相關的接口和類下面逐一對其進行介紹。
1)Spider類
Spider類有3個作用。首先它作為Spider的接口提供了使用Spider的方法;此外,Spider對象管理線程池并且向啟動Spider的對象報告Spider發現的頁面。最后,確定Spider的工作何時完成也是Spider。Spider類允許兩個附加的類來定制化Spider的操作,這兩個類由ISpiderReportable和IWorkload Storable兩個接口定義。
2)ISpiderReportable接口
ISpiderReportable接口定義T幾類事件,Spider將這些事件送回到它的控制器,在控制器中再定義對這些事件的處理方法。執行ISpiderReportable接口的類取回Spider找到的頁面,然后對這些頁面進行處理。
3)IWorkloadStoralbe接口
這個接口用于定制化Spider的行為。Spider的一個主要任務是組織要訪問的站點的列表,這些列表被稱為作業(workload)。這個接口定義一個對象,它能從作業中存儲和取回頁面。
4)SpiderWorker類
Spider程序下載Web站點并將頁面上的鏈接添加到作業中,這個基本任務由SpiderWorker來完成。Spider程序啟動的時候,建立一個SpiderWorker類池,相當于一個線程池,每個線程同時處理Spider找到的頁面。
5)SpiderDone 類
由于有多個同步運行的線程,所以很難知道什么時候Spider的工作已經完成。這樣就需要一個對象來跟蹤還在運行的線程的數量,當數量變為零時就意味著Spider的工作結束。SpiderDone類就是為此目的而引入的。
Lucene[6]是一個高性能,易于擴展的 IR<Information Retrieval)Java類庫,可以利用其中的Java類輕松地在應用程序中增加索引和搜索功能。Lucene完全用Java實現,具有良好的跨平臺性,是ApacheJakarta項目中的一個子項目。
Lucene允許添加索引和搜索功能到應用程序中,它能索引并搜索任意能轉換為文本格式的數據,Lucene并不關心數據的來源、格式、甚至它的語言,只要它能轉換成文本。遠程WEB服務器上的Web頁面,存放在本地文件系統中的文檔,簡單文本文件,MS-Word文檔,HTML或PDF文件,以至于其它任何能夠抽取出文本信息的文件格式。同時Lucene能夠索引存儲在數據庫中的數據,給予用戶許多數據庫都不能提供的全文檢索功能。
Lucene[7]提供了一些核心類用于在應用程序中增加索引和搜索功能。Lucene的API接口設計的比較通用,輸入輸出結構都很像數據庫的表今記錄今字段,所以很多傳統應用的文件、數據庫等都可以比較方便的映射到Lucene的存儲結構/接口中。總體上看可以把Lucene當成一個支持全文索引的數據庫系統。
由于許多技術型搜索引擎頻繁地改變其算法以保持公平性,造成其搜索結果排名順序經常變動,因此企業要不斷的跟蹤這類搜索引擎的技術變化,及時作出相應的調整,以保持自己在搜索引擎中的優勢地位。
雖然對搜索引擎的基本功能進行了實現,但還存在許多的不足,只能用作理論研究,離實用還有很長的距離。文中構建的網絡蜘蛛程序利用隊列和多線程機制,具有較高的效率,但只能抓取簡單的HTML頁面[8],對由JSP,ASP等生成的動態頁面還顯得無能為力,也不支持CSS (Cascading Style Sheets,層疊樣式表)頁面等等。在索引部分因為借用了Lucene軟件包中的一個HTML解析器,雖然經過改進能較好地支持中文,但在索引時還是會經常報錯,主要是這個HTML解析器只支持HTML的一個子集。
[1]土淡.搜索引擎營銷研究及“ED”公司搜索引擎營銷實施[D].成都:電子科技大學,2001.
[2]喬冬梅.搜索引擎現狀與發展研究 [D].鄭州:鄭州大學,2002.
[3]劉建元.我國中小企業網絡營銷策略[D].長沙:中南林學院,2002.
[4]王正平.現代企業網絡營銷策略思考[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站內全文檢索系統的設計與實現[J].現代電子技術,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技術的數據庫連接應用探討[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.