發新話題

《資訊》WebSearch的建置

《資訊》WebSearch的建置

一、 前言:
一般人在建置網頁後,隨著網頁內容的不斷擴充,上網的使用者要在網站上找尋想要的資訊就愈來愈困難,誠然許多的網站會用分類、階層式的方法來加速使用者的搜尋速度,但是使用者仍可能不知到那裏去繼續搜尋想要的資訊,此時,最佳的解決方法,是在網站上提供「網站搜尋」的功能,讓使用者可以鍵入幾個關鍵字後,便立即找尋到網站上的相關內容,本文即是在介紹「網站搜尋」的功能,主要是對自己架設的網站上面的資料,作全文檢索並將內容輸入至資料庫,之後便可以在網頁中,作搜尋的動作。在進入正題前,先將測試時的各種環境列示如下:
  • Web Server: Apache
  • PlatForm: Linpus 6.4
  • DbMaker: 3.7
比較要注意的是Apache的設定,其他部份則較簡單。
websearch的功能,是已經建置好了一個網站,文件已經備妥(一般說來,html的文件會放在/home/httpd/html底下,視系統設定而定),那麼為了讓上網的其他使用者可以快速找到這個網站上面的資料,所提供的快速搜尋功能,例如:dbMaker的首頁:

在紅框的部份就是使用了這個功能,當使用者鍵入了想要搜尋的字串,便可立即找到相對的html文件。在開始之前,請務必確認已經有網頁資料可供搜尋(例:dbMaker的所有網頁都放在/home/httpd/html/dbmaker/底下,若無,請先去download一個網頁,可用WebCopier或wget等工具,將你要的網頁內容download下來)
二、 設定:
建立cgi程式
web-search的設定其實不難,首先我們先安裝所需要的軟體,你可在訪客無法瀏覽此圖片或連結,請先 註冊登入會員 中找到相關軟體,或是在dbMaker 3.5使用完全安裝,應該可以找到/home/dbmaker/3.5/application/WebSearch這個目錄,若無,代表當初安裝並未安裝application這個項目,請重新安裝。 檔案準備妥當後,請進入WebSearch裏的code/src裏,重新build相對的cgi程式,在該目錄中下make指令,如此應該會產生login、view、search及build四支cgi程式,你可以在同個目錄下看到這四支程式

若無,則可能是未正確安裝了cc或gcc的編譯器
接下來,把這個四支程式複製到/cgi-bin/的目錄底下,這個目錄須視Apache Server怎麼定,例中是把/cgi-bin/這個目錄放在/home/httpd/html/cgi-bin/底下,您可以看httpd.conf怎麼設,來決定放在那裏。(httpd.conf通常會放在/etc/httpd/conf底下,但這也是不一定,若真找不到,用find / -name httpd.conf找一下吧!!)
root@brian cgi-bin ls
./ ../ build.cgi* login.cgi* search.cgi* view.cgi*
當上述步驟都完成了後,別忘了重新啟動apache,使新的設定發生效果唷!!(執行/etc/rc.d/init.d/apachectl restart)
建立資料庫
OK,現在我們手上已經有了四支cgi程式,接下來的工作就不難了。先到/home/dbmaker/3.5/application/WebSearch底下,有一個crt.sql的檔案,這個檔案是用來建立資料庫的,請執行底下命令:
root@brian cgi-bin>/home/dbmaker/3.7/bin/dmsqls crt.sql
然後你便會看到開始建立資料庫的情形,但是這樣還沒全好,因為這只是建好資料庫,我們需要的是資料庫能一直run下去,所以要把它設定成Client/Server的方式,請在/home/dbmaker/data底下,來修改dmconfig.ini;(用vi或joe,找到[WebSearch]這一段,加上下面文字)

(1)

DB_UsrFo=1

(2)

DB_SvAdr= your_web_site_address ; 例如DB_SvAdr=192.72.116.165,省事一點就打127.0.0.1吧

(3)

DB_PtNum=port_number ; 1025~65535 ; 隨便指定,只要不跟其他資料庫衝到就好
儲存後離開,然後再去執行/home/dbmaker/3.7/bin/dmserver -u SYSADM websearch,若能正常啟動,代表資料庫已經開啟
編輯測試用HTML文件

ok,現在我們資料庫已經正常啟動,而所有的網頁html文件也備妥放在/home/httpd/html底下,現在我們可以開始將這些html文件放到資料庫中,請到/home/dbmaker/3.5/application/WebSearch底下,將login.htm、template.htm都放到/home/httpd/html底下,在template.htm的body中,加上兩行:
<body>
<!-- #BeginEditable "body" -->
.................................
<!--$DBMSearch$-->
<base href="http://www.dbmaker.com.tw">

................................
<!-- #EndEditable -->
</body>
加上這兩行後,cgi會將搜尋出來的結果放在這個網頁上的<!--$DBMSearch$-->中。
Web Administrator設定
接下來,是要將網頁資料放到資料庫裏面去,請用browser開啟你剛剛放入的login.htm文件,你會看到:

Note:若無圖形顯示,請將/home/dbmaker/3.5/application/WebSearch中的images目錄也copy至這個hmtl文件的目錄下,另外,若是有錯誤訊息,最有可能的原因是權限未開放,請檢視dbmaker下的各目錄權限是否可讓nobody讀取
一開始是沒有設定任何密碼,請直接login,然後會再要求你修改密碼,修改密碼完了以後,就會看到下面的畫面:

以上的各項設定解釋如下(若看過後仍然不清楚,用預設值即可):
  • Search directories:所有欲搜尋網頁必須放置於此路徑之下。
  • Recursively process subdirectory:是否使用遞迴搜尋 (預設值:off ),如果設為 ON,WebSearch會搜尋位於搜尋目錄路徑下所有的子目錄裡的檔案名稱與內容,以找出所有符合搜尋條件之網頁。
  • Forbidden directories:不想讓客戶端搜尋到的目錄,即此目錄下的HTML檔案及其子目錄所包含的檔案,皆不會讓客戶端搜尋到。
  • Filename extensions:選擇搜尋的副檔名 (例如:.htm 或是.html)。
  • Template file:Web Administrator會編輯出一個暫存的HTML檔案,用來顯示搜尋結果給客戶端瀏覽,但必須先行加上這個標籤 <!--$DBMSearch$-->,來指定搜尋結果所要存放的位置。
  • How many items one page:將搜尋結果分頁顯示,每頁顯示的資料筆數。
  • Weight of title:分數計算的方程式,用以顯示欲搜尋字串在網頁內出現的比重 ( 總分 = 5 * (網頁標題出現搜尋字串的次數 * 10分 + 網頁內容出現搜尋字串的次數 * 1分 ) )
  • Log Client:是否啟動客戶端瀏覽紀錄(default OFF)
  • Language Version:客戶端的語言顯示版本,當Web客戶端執行一個搜尋的動作時,他會得到一連串搜尋結果的訊息,WebSearch Utility提供多種語言訊息,網站管理者可以決定什麼語言要顯示在網站上。
  • Homepage Directory:首頁的目錄路徑
  • Temp Directory:暫存檔的目錄路徑
  • HighLight Style:搜尋到字串的表示格式(包含設定顏色、粗體、斜體 )
接下來按下「build」,就會開始建立搜尋功能,若出現下面訊息,表示大功告成!!

你也可以按「View Inserted Data」,來檢閱有什麼資料已經進入資料庫!
測試
現在所有動作已經完成,我們隨意放支html來試試看是否成功了,編輯index1.htm文件,內容如下:
<script language="JavaScript">
function check_input() {
var status=false;
if (document.query.pattern.value != "")
status=true;
if (status == false)
alert("請輸入查詢字串, 謝謝!");
return status;
};
</script>
<form name="query" method="post" action="/cgi-bin/search.cgi" >
<input type="text" name="pattern">
<input type="submit" name="Submit" value="搜尋">
<br> Case sensitive?
<input type="radio" name="c-sensitive" value="1"> Yes   
<input type="radio" name="c-sensitive" value="0" checked> No
</form>
現在開啟這個html,試試看是否已正常動作!


大功告成!!真的可以用了!

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。