天天看點

【北大天網搜尋引擎TSE學習筆記】第1節——環境搭建1、簡介2、安裝Apache23、建立伺服器目錄并準備檔案4、修改web伺服器配置

    最近在看《搜尋引擎——原理、技術與系統》一書,同時下載下傳了書中介紹的原型系統——北大天網搜尋引擎TSE的源代碼進行學習。之前沒有任何搜尋引擎方面的基礎,也沒有web開發經驗,一切從零開始學習。為了記錄學到的知識以備日後之用,也為了與大家分享并一起學習探讨,将學習的過程整理成筆記,連載釋出于本部落格。聲明一下,我不是高手,我是菜鳥,從零開始學習,是以如果文中有錯誤之處敬請大家批評指出,也歡迎感興趣的朋友一起學習探讨。(QQ:44452114,微網誌:http://weibo.com/liubing2000)。

1、簡介

    下載下傳TSE的源碼,位址為:http://sewm.pku.edu.cn/book/。裡面各種類型的檔案較多,先對這些檔案有個大概的了解。

        (很多朋友反映上面的位址已經下不到了,大家可以到這裡下我注釋過的代碼:http://git.oschina.net/lewsn2008/LBTSE)

    第一,README.txt是對軟體包的介紹,可以先看看該檔案對系統的源代碼的簡介。其實不管拿到什麼軟體或者程式,閱讀Readme.txt是一個好的習慣。

    第二,TSE.mp3和TSE.pdf為原書作者之一闫宏飛提供的對TSE系統講解的錄音和講稿,大家可以先對照講稿聽闫老師的講解,對系統的原理有個初步的了解;

    第三,tse_tutorial.pdf 是侯銳學習過程中寫的,主要是關于環境搭建的過程。不過本人覺得介紹的并不詳細,新手(對于該系統的新手)拿到後并不能很清楚的了解,因而照着操作也不一定能成功,當然可以拿來參考;

    第四,《搜尋引擎——原理、技術與系統》(後文簡稱為”《搜尋》“)書中介紹搜尋引擎工作流程主要分為三個階段:網頁搜集、預處理和查詢服務,index.XXXXXX-XXXX.Linux.tar.gz檔案對應TSE系統的預處理和查詢服務子系統;

    第五,tse.XXXXXX-XXXX.Linux.tar.gz對應TSE系統的網頁搜集子系統(也可稱為網頁抓取程式,即俗稱的爬蟲程式)。

    TSE的查詢服務(在index.XXXXXX-XXXX.Linux.tar.gz中)是可以獨立運作的,不依賴于網頁搜集和預處理,因為在index.XXXXXX-XXXX.Linux.tar.gz包中已經包含了網頁搜集和預處理子產品的結果資料。解壓index.XXXXXX-XXXX.Linux.tar.gz後可以看到一個Data目錄,該目錄中主要存儲了網頁搜集和預處理子產品的結果資料,其中Tianwang.raw.2559638448為網頁搜集子產品抓取的原始網頁資料(以天網格式存儲),sun.iidx為反向索引的關鍵詞索引檔案(即原始檔案中所有的關鍵詞到包含該關鍵詞的網頁的id的映射),Doc.idx為網頁索引檔案(網頁的id到在原始網頁資料檔案中存儲位置的映射)。如果不能了解這些資料檔案,沒有關系,在第二節中将詳細介紹。

    TSE的查詢服務子系統可以獨立運作是很好了解的,因為搜尋引擎的三個階段是可以互相獨立的,如同商業化的搜尋引擎也是一樣的,網頁搜集子系統運作一次後搜集到很多網頁資料,便可以經過預處理後提供查詢服務,當然這裡的查詢是基于已經搜集的網頁資料的查詢,而不是每一次查詢服務都要到網絡上實時的抓取網頁,是以不能保證與網絡上的實時的網頁資料保持一緻。本系統的index.XXXXXX-XXXX.Linux.tar.gz獨立運作時便是基于已經搜集的網頁資料Tianwang.raw.2559638448進行查詢的,如果需要基于新的網頁資料進行查詢,就需要運作網頁搜集子產品(tse.XXXXXX-XXXX.Linux.tar.gz)重新抓取網頁。

    既然查詢服務子系統可以獨立運作,我們可以先把查詢服務子系統運作起來,先不管預處理和網頁搜集的過程,可以說我将以倒叙的方式來進行說明,先是查詢服務,再是預處理,然後是網頁搜集。我們先來研究index.XXXXXX-XXXX.Linux.tar.gz包。

2、安裝Apache2

   查詢服務子系統運作起來後是如圖1所示的效果,跟商業搜尋引擎沒什麼卻别。    

【北大天網搜尋引擎TSE學習筆記】第1節——環境搭建1、簡介2、安裝Apache23、建立伺服器目錄并準備檔案4、修改web伺服器配置

圖1

    既然展現出來的是一個網頁程式,是以需要搭建web伺服器,TSE系統用的是Apache2伺服器,關于web開發的内容我不敢在此啰嗦,因為我本人也沒有做過web開發,不能在這裡誤導大家,僅僅是把我操作的過程在這裡與大家分享,如果有錯誤之處大家盡管批評指正。Ubuntu下Apache2安裝與配置的詳細介紹可以參考這兩篇文章:

    http://www.blogjava.net/duanzhimin528/archive/2010/03/05/314564.html,

    http://blog.csdn.net/rookieding/article/details/7314054

    我的系統是Ubuntu10.10,安裝指令:sudo apt-get install apache2,如果安裝失敗的話,可以運作:sudo apt-get update更新源後再重新嘗試。

    安裝成功後有三個目錄很重要,以下進行說明:

    (1)/etc/init.d/,該目錄中的apache2檔案用于啟動、停止和重新開機apache2伺服器

    啟動:sudo /etc/init.d/apache2 start

    停止:sudo /etc/init.d/apache2 stop

    重新開機:sudo /etc/init.d/apache2 restart

   (2)/etc/apache2/,該目錄主要包含apache2伺服器的配置相關的檔案

    apache2.conf是主配置檔案,httpd.conf是使用者配置檔案,我在安裝完後httpd.conf中是空的,并沒有網上文檔中說的那些配置項。

    sites-available目錄為可用站點配置,sites-enable目錄為啟用的站點配置,可以看到sites-enable目錄隻有一個連結檔案,連結到../sites-available/default,是以該default檔案便是預設的啟用的站點的配置檔案。裡面的主要内容如下:

    <VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot /var/www/這裡配置站點的web文檔根目錄的位址,後面會修改這裡!

    ......

   (3)/var/www/,該目錄是上面介紹的站點的web文檔根目錄的位置

    預設的站點網頁檔案會放在這裡,但是可以修改上面的配置檔案來修改,TSE系統中會進行修改,後面介紹!

    Apache2安裝成功後不做任何修改,打開浏覽器通路http://localhost/,如果顯示It works! 的網頁(如下圖所示),就說明安裝功了。

【北大天網搜尋引擎TSE學習筆記】第1節——環境搭建1、簡介2、安裝Apache23、建立伺服器目錄并準備檔案4、修改web伺服器配置

圖2

多啰嗦兩句,這裡為什麼會顯示這樣的一個網頁頁面呢?前面介紹了預設情況下站點的web文檔的根目錄位置在/var/www/,打開該目錄會找到一個index.html的檔案,這個便是顯示的網頁頁面的檔案,vim index.html打開檔案可以看到,檔案中的内容确實是網頁中顯示的内容。

3、建立伺服器目錄并準備檔案

    從這裡開始搭建自己的web伺服器,準備TSE搜尋引擎的頁面檔案和背景搜尋程式等,将這些檔案放置在web伺服器的相應目錄中。前面介紹了web站點的預設根目錄在/var/www/,也可以進行修改,由于TSE系統的源代碼中不是用的該預設目錄,為了不去修改源代碼是以修改站點的根目錄,将web站點搭建在與源代碼中相同的位置,下面開始操作(可參考tse_tutorial.pdf)。

    (1)如果以下目錄不存在則建立,/var/www/html/,/var/www/html/yc-cgi-bin/index/,/var/www/yc/TSE/;

    (2)編譯源代碼:

                  tar zxvf index.XXXXXX-XXXX.Linux.tar.gz 解壓

                  cd index 進入index目錄

                  make 進行編譯生成

    (3)把index/public_html中的所有檔案拷貝到/var/www/html/中,實際上這些檔案就是TSE搜尋引擎首頁(圖1)的頁面檔案和資源檔案,裡面的index.html即頁面檔案,還有.gif和.JPG即頁面的圖檔檔案;

    (4)把index/public_html中的所有檔案拷貝到/var/www/html/yc/TSE/中,暫時不明白這裡為什麼要做這一步!

    (5)tse_tutorial.pdf中寫到”将make 後的檔案放到/var/www/html/yc-cgi-bin/index/ 中“,這裡實際上不需要把index目錄中的所有檔案拷貝過去,而隻需要拷貝make後生成的可執行程式和資料檔案(包括ChSeg目錄、Data目錄和words.dict連結檔案),源檔案(.h和.cpp)和目标檔案(.o)是不需要的。當然,如果不了解或者嫌麻煩也可以将所有檔案都拷貝過去。/var/www/html/yc-cgi-bin/index/目錄實際上是該站點cgi程式的路徑,也就是實作搜尋功能的可執行程式所在的目錄。關于cgi可以搜尋相關的資料學習。

4、修改web伺服器配置

    (1)配置字元集

    設定預設字元集,定義伺服器傳回給客戶機預設字元集(由于西歐UTF-8是Apache預設字元集,是以當通路有中文的網頁時會出現亂碼,這時隻要将字元集改成GB2312,再重新開機Apache服務即可)。——引用自:http://www.blogjava.net/duanzhimin528/archive/2010/03/05/314564.html。      

    與tse_tutorial.pdf中說的不一樣,不是修改/etc/httpd/conf/httpd.conf,而是修改/etc/apache2/conf.d/charset,在檔案中加入:AddDefaultCharset GB2312。

    (2)配置web站點根目錄和cgi程式目錄

    因為3中已經将網頁檔案放到/var/www/html/,也就是該web站點以該目錄為根目錄,是以需要修改Apache2的配置檔案進行配置。3中将可執行程式(cgi程式)放到/var/www/html/yc-cgi-bin/index/,是以需要配置Apache2的配置檔案修改cgi程式目錄。與tse_tutorial.pdf中說的不一樣,不是修改/etc/httpd/conf/httpd.conf,而是修改/etc/apache2/sites-available/default,修改如下:

                 DocumentRoot /var/www/

                     <Directory />

                         Options FollowSymLinks

                         AllowOverride None

                     </Directory>

                     <Directory /var/www/>

    改為:

                 DocumentRoot /var/www/html/

                     <Directory />

                         Options FollowSymLinks

                         AllowOverride None

                     </Directory>

                     <Directory /var/www/html/>

               ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

                    <Directory "/usr/lib/cgi-bin">

    改為:

                ScriptAlias /yc-cgi-bin/index/ /var/www/html/yc-cgi-bin/index/

                    <Directory "/var/www/html/yc-cgi-bin/index/">

    

    至此,TSE查詢服務子系統搭建完畢,重新開機Apache2:

    sudo /etc/init.d/apache2 restart。

    打開浏覽器,輸入“http://localhost/"就出現了北大天網的搜尋頁面(如圖1所示)。

    至于這裡為什麼會顯示圖1所示的頁面,前面已經說明過,因為在Apache2中已經配置了伺服器的站點根目錄為/var/www/html/,該目錄中的index.html便是預設的顯示頁面檔案。

By:

【北大天網搜尋引擎TSE學習筆記】第1節——環境搭建1、簡介2、安裝Apache23、建立伺服器目錄并準備檔案4、修改web伺服器配置