APP下载

XML在搜索引擎中的应用

2009-02-01严永松

数字技术与应用 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 软件实现

以下用一个简单的学生成绩查询系统为例具体说明如何实现。可以先按照学生所在的班级将学生成绩查询出来,然后可以选出平均分高于设定分数(用一个文本框接收设定分数)的学生列表。

在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 %>