?

XML在搜索引擎中的應用

2009-02-01 03:29嚴永松
數字技術與應用 2009年12期

嚴永松

[摘 要]在搜索引擎的設計以及類似的軟件功能設計中,一個必不可少的功能就是:對已有搜索結果的二次檢索。如果能在客戶端對已經下載的數據集合進行二次檢索,將極大地減輕web服務器以及數據庫服務器的負擔。本文以一個實例,采用msxml dom方案介紹了二次檢索的實現。

[關鍵詞]XML XML編程接口 二次檢索

[中圖分類號]G[文獻標識碼]A[文章編號]1007-9416(2009)12-0058-03

[Abstract]In the search engine design,and software functions like design,an essential function is:To have the secondary search results retrieved.If the client already downloaded a second collection of data retrieval,will greatly reduce the web server and database server burden.In this paper,an example of using msxml-dom program introduced the realization of the second search.

[Key word]XML/ XML Programming Interface/Secondary Search

在搜索引擎的設計以及類似的軟件功能設計中,一個必不可少的功能就是:對已有搜索結果的二次檢索。如果檢索的數據集是靜態數據(例如存放在數據庫中),通常的做法是在已有的檢索條件的基礎上,動態加入新的約束條件。但是重新構造數據檢索的約束條件,往往需要用戶同服務器再次交互,重新下載所需數據集合并輸出。如果能在客戶端對已經下載的數據集合進行二次檢索,將極大地減輕web服務器以及數據庫服務器的負擔。

xml能夠很大程度地滿足以上需求。它將數據內容本身與數據顯示格式獨立開來,分別處理。這樣,如果需要改變文檔的顯示方式,只要修改樣式文件(xsl)就可以了。xml的自我描述特性能夠很好地表現許多復雜的數據關系,使得基于xml的應用程序可以在xml文件中準確高效地搜索相關的數據內容,忽略其他不相關的部分。同時,整個數據操作都是在客戶端完成,大大減輕了服務器的負擔。

1 xml編程接口dom簡介

dom(document object model,文檔對象模型)是一種與平臺和語言無關的編程接口,它允許程序和腳本動態訪問和修改文檔的內容結構和類型。它定義了一系列的對象和方法對dom樹的節點進行各種隨機操作。

(1)document對象:是dom樹的最頂層節點,是對整個文檔進行操作的入口。

(2)element和attr對象:這些節點對象都是文檔某部分的映射,節點的層次恰好反映了文檔的結構。

(3)text對象:作為element和attr對象的子節點,text對象表達了元素或屬性的文本內容。text節點不再包含任何子節點。

(4)集合索引:dom提供了多種集合索引方式,可以對節點按指定方式進行遍歷。

dom采用以上介紹的一系列接口來描述xml文檔的內容和結構,即利用對象將文檔模型化。這種對象模型實現的基本功能包括:

(5)描述文檔表示和操作的接口;

(6)接口的行為和屬性;

(7)接口之間的關系以及互操作。

dom對結構化的xml文檔進行解析,文檔中的元素、實體、屬性等所有個體都可以用對象模型表示。整個文檔的邏輯結構類似一棵樹,生成的對象模型就是樹的節點,每個對象同時包含了方法和屬性。dom提供了許多查找節點的方法。其中用于搜索的方法有:

(1)根據標簽名稱搜索元素:利用document對象中的getelementsbytagname方法在全文范圍內查找元素;

(2)使用xsl模式搜索節點:所有類型的節點都帶有selectnodes方法,調用這個方法可以利用xsl的模式匹配策略查找節點;

(3)使用集合索引搜索節點:索引參數都是從0開始計數的,例如子節點childnodes對象集。利用dom,開發人員可以動態地創建xml、遍歷文檔、增加(刪除/修改)文檔內容。dom提供的api與編程語言無關,所以對一些dom標準中沒有明確定義的接口,不同解析器的實現方法有可能有所差別。本文的示例采用msxml dom方案,并采用ie 5.0作為輸出顯示的瀏覽器。

2 軟件實現

以下用一個簡單的學生成績查詢系統為例具體說明如何實現??梢韵劝凑諏W生所在的班級將學生成績查詢出來,然后可以選出平均分高于設定分數(用一個文本框接收設定分數)的學生列表。

在sql server中包含一個學生成績表,關鍵字段有:學生姓名(name)、班級(class)、單科成績(yuwen、shuxue、jisuanji、yingyu等)、平均成績(averagescore)。

首先,編輯初始頁面以提供按班級查詢學生成績的功能。

輸入班號:

myrearch.asp文件中,提供按平均成績查詢的二次查詢功能。關鍵代碼如下:

<%@ language=vbscript %>

//建立數據庫連接,并根據用戶需求,從數據庫中檢索出所有符合要求的數據集

<% set conn=server.createobject(“adodb.connection”)%>

<% set rs=server.createobject(“adodb.recordset”) %>

<% conn. open application(“sqlserver conn”) %>

<% sqltext=“select * from scoretable where class=‘” %>

<% sqltext=sqltext & request.form(“classname”) & “” %>

<% set rs=conn.execute(sqltext) %>

<% rs.movefirst %>

//在html文件中建立一個xml數據對象(xml數據島)

//并且將數據庫檢索的數據集寫入該數據島中

//該數據對象的唯一標識為studentlist

<% do while not rs.eof %>

<% for i=0 to rs.fields.count-1 %>

//以數據庫表的列名為xml節點的節點名

<<%=rs.fields(i).name %>>

<%=rs.fields(i).value %>

>

<% next %>

<% rs.movenext %>

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合