李苑 李明
[摘? ? 要] 從企業(yè)網站中用戶經常使用的信息瀏覽和信息檢索兩個需頻繁讀取數(shù)據(jù)庫的功能入手,介紹了可有效降低數(shù)據(jù)庫讀取頻率的靜態(tài)頁面生成技術和站內全文檢索技術的原理和實現(xiàn)方式。
[關鍵詞] 企業(yè)網站;靜態(tài)頁面生成;全文檢索
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2019. 03. 053
[中圖分類號] TP311? ? [文獻標識碼]? A? ? ? [文章編號]? 1673 - 0194(2019)03- 0131- 03
0? ? ? 引? ? 言
企業(yè)網站是用戶了解企業(yè)的一個重要窗口,它可為企業(yè)提供信息發(fā)布、產品宣傳、數(shù)據(jù)采集以及電子商務等功能,成為企業(yè)與客戶及供應商之間溝通交流的一個紐帶[1]。但是,隨著網站數(shù)據(jù)量和訪問量的不斷增加,頻繁的數(shù)據(jù)庫讀寫操作將耗費大量的服務器資源,給網站性能帶來嚴重的影響,進而降低用戶的體驗。在Web服務器性能不變的情況下,為有效降低數(shù)據(jù)庫的讀寫操作,可從用戶訪問量最頻繁的信息瀏覽和信息檢索兩個方向入手,通過靜態(tài)頁面生成和站內全文檢索技術的應用來提高網站的響應速度。
1? ? ? 靜態(tài)頁面生成技術
在企業(yè)網站的開發(fā)過程中,為方便網站內容的日常維護,通常會采用動態(tài)網頁技術。動態(tài)網頁是以數(shù)據(jù)庫技術為基礎的一種網站開發(fā)技術,其URL后綴比較常見的有 aspx、jsp、php、asp等形式。近年來隨著MVC技術的快速發(fā)展,“control/action/id”形式URL格式也比較普遍。動態(tài)網頁在運行過程中,需將數(shù)據(jù)預先存儲到數(shù)據(jù)庫中,當客戶通過瀏覽器向Web服務器發(fā)出HTTP請求時,服務器再根據(jù)請求執(zhí)行相應的程序,從數(shù)據(jù)庫中讀取所需要的內容并填充到動態(tài)頁面中,然后再將運行結果以HTML的格式傳送至客戶端瀏覽器,并解釋和顯示[2]。采用動態(tài)網頁技術可以大大降低網站內容的維護成本,如果需要修改已發(fā)布網站內容,只需在管理頁面修改相應的數(shù)據(jù)庫字段內容即可。
企業(yè)網站發(fā)布的信息常常會有很大一部分發(fā)布出來后就很少出現(xiàn)更改的情況,如果采用動態(tài)頁面技術,每請求一次就需要執(zhí)行一次數(shù)據(jù)的查詢和信息的轉換操作,而每次操作都需要消耗一定的服務器的資源,對于訪問量較大的網站來說,很容易出現(xiàn)服務器負擔過重的情況。為解決這一問題,就出現(xiàn)了將動態(tài)網頁轉換為靜態(tài)頁面的技術,并在很多大型網站上得到了應用。靜態(tài)頁面擴展名為html或htm,頁面存儲的內容直接就是HTML格式的文件,不需要經過服務器的編譯,直接根據(jù)請求將頁面中的HTML代碼傳遞到客戶端的瀏覽器即可顯示出來。因此,靜態(tài)頁面的訪問速度比動態(tài)頁面要快許多,而且,由于不需要像動態(tài)頁面一樣執(zhí)行數(shù)據(jù)的查詢和轉換操作,所消耗的服務器資源也較低。但靜態(tài)頁面無法自動更新,如果某個靜態(tài)頁面的內容需要修改,只能在后臺管理頁面重新創(chuàng)建一次,故靈活性較差,也不便于控制其訪問權限。因此,動態(tài)頁面的靜態(tài)化技術只適合于應用在不需要頻繁對頁面內容進行更新和權限控制的功能模塊中,如企業(yè)網站中的新聞發(fā)布功能模塊等。以下為.NET環(huán)境下一種將動態(tài)頁面生成為靜態(tài)頁面的方法。
2? ? ? 站內全文檢索技術
隨著企業(yè)網站各功能模塊中信息量的逐漸增加,如何利用關鍵詞快速地查找到所需信息也就成了網站要解決的關鍵問題之一。對于小型的企業(yè)網站來說,由于數(shù)據(jù)量不是太大,采用基于數(shù)據(jù)庫的模糊檢索方式就能滿足要求,即根據(jù)用戶輸入的關鍵詞構建“select * from tableName where title like ‘%keyword%”等類型的檢索式即可從數(shù)據(jù)庫中檢索出滿足條件的數(shù)據(jù)。但這種檢索方式只適合檢索結構化數(shù)據(jù),無法對文本、圖片等非結構化數(shù)據(jù)進行檢索。而且,在使用like查詢時,需要對數(shù)據(jù)庫表格中相關字段的內容全部檢索一次,在數(shù)據(jù)量較大的環(huán)境下,like查詢對系統(tǒng)性能的影響是相當大的。如果是需要對多個關鍵詞進行模糊匹配:like"%keyword1%" and like "%keyword2%",其檢索效率將會成倍較低,所耗費的服務器資源也會成倍增加。
為解決傳統(tǒng)數(shù)據(jù)檢索方式存在的效率低下問題,以Lucene為代表的站內全文檢索技術也就應運而生。Lucene 的檢索過程實際上就是把模糊查詢變成可以利用索引進行精確查詢的過程[3],就如查字典,只需要從索引目錄中找出所查字符的頁碼即可實現(xiàn)精確定位,不需要一頁一頁的去搜尋,極大地提升了數(shù)據(jù)檢索的效率和準確性。全文檢索的實現(xiàn)過程主要分為索引創(chuàng)建和搜索索引兩個步驟。其中,索引創(chuàng)建就是將結構化數(shù)據(jù)和非結構化數(shù)據(jù)的特征信息提取出來并儲存到創(chuàng)建好的索引庫中;搜索索引就是根據(jù)用戶需要查詢的關鍵詞,從索引庫中搜索出滿足條件的記錄,然后將查詢結果返回給用戶。
索引庫的建立是全文檢索的關鍵技術點,假設某個文檔集合里面有100篇文檔,為了方便表示,將文檔從1到100進行編號,每個編號代表一篇文檔,然后將每篇文檔的關鍵信息提取出來,得到下面的索引結構(見圖1)。左邊保存的是反映文檔關鍵信息的一系列字符串,稱為詞典。每個字符串所指向的是包含此字符串的文檔鏈表,這一文檔鏈表稱為倒排表。一篇文檔可以擁有詞典中的多個字符串。
當索引庫建立起來后,就可通過從索引庫中搜索相關的關鍵詞來查找所需要的信息。
比如,如果我們要尋找既包含字符串“知識”又包含字符串“經濟”的文檔,只需要執(zhí)行以下三步:①取出包含字符串“知識”的文檔鏈表。②取出包含字符串“經濟”的文檔鏈表。③對以上兩個文檔鏈表進行合并,就可找出既包含“知識”又包含“經濟”的文檔為3、10、31這三篇文檔。然后將這三篇文檔的信息返回給用戶即完成了檢索(見圖2)。
從以上全文檢索的原理可以看出,全文檢索中創(chuàng)建索引的過程只需一次,以后每次搜索數(shù)據(jù)的時候,只需從創(chuàng)建好的索引庫中搜索相應的關鍵詞就可以了,而且還可以根據(jù)相似度算法對檢索結果進行排序,不必像數(shù)據(jù)庫模糊查詢一樣重新遍歷一次數(shù)據(jù)庫中的全部數(shù)據(jù)。
3? ? ? 結? ? 語
對于訪問量和數(shù)據(jù)量較大的企業(yè)網站來說,靜態(tài)頁面生成技術和站內全文檢索技術的應用可有效提升網站的整體性能,為用戶帶來更好的使用體驗。其中,靜態(tài)頁面生成主要是降低動態(tài)頁面運行過程中不斷進行數(shù)據(jù)庫的查詢和數(shù)據(jù)轉換操作給服務器資源帶來的不必要耗費,提高頁面的響應速度。站內全文檢索技術主要是解決了傳統(tǒng)的基于數(shù)據(jù)庫模糊查詢而帶來的問題,提升了數(shù)據(jù)檢索的效率和準確性。
主要參考文獻
[1]鄧三鴻,楊建林,潘有能,等.企業(yè)門戶網站中的數(shù)據(jù)挖掘研究[J]. 情報學報,2003,22(1):40-45.
[2]白金牛,李慧萍,王培吉. ASP.NET下利用動態(tài)網頁技術生成靜態(tài)HTML頁面的方法[J]. 計算機應用與軟件,2008,25(1):79-81.
[3]郎小偉,王申康.基于Lucene的全文檢索系統(tǒng)研究與開發(fā)[J]. 計算機工程,2006,32(4):94-99.