打印本文 打印本文 关闭窗口 关闭窗口
用VBScript制作个人网站搜索引擎
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1831  更新时间:2009/4/23 18:52:34  文章录入:mintao  责任编辑:mintao
VBScript制作个人网站搜索引擎



摘要:本文探讨了只利用VBScriptXML技术创建不需要数据库服务器的搜索引擎,该搜索引擎在最基本的Web服务器和IE 4.0以上客户端环境中运行,可以查询自己网站上的各种信息,尤其适合没有服务器端脚本(CGI、ASP、JSP……)支持和数据库支持的个人网站应用。

关键词:XMLXML文档对象模型(XMLDOM)、搜索引擎、VBScript、文档对象模型(DOM)、Internet

Internet中,搜索引擎技术是一种十分重要的信息检索手段,目前Internet上的搜索引擎分为两类。

一类是分类法,分类法的做法是把各个网站登陆的信息按照一套分类方法分成若干目录,每个目录下又有几个子目录。分类法的代表是早期的YahooSohu,例如:



Sohu的分类检索中,首页下分为了娱乐休闲、国家与地区、工商经济、计算机与互联网等一级目录,在一级目录中以计算机与互联网为例,分为互联网、软件、编程、免费资源等二级目录,互联网目录下又分为门户网站、免费电子邮件、网上教程等三级目录……

另一种搜索引擎实现方法就是关键字搜索。关键字搜索有很多具体实现方法:CGIASP等脚本程序或利用Microsoft Index ServerMicrosoft Transaction Server等中间件的Internet应用……这种搜索引擎的代表是Google、天网等,以及YahooSohu的关键字搜索部分。
Google的实例:






 


 高级搜索
 使用偏好


搜索所有网站 搜索中文(简体)网页

关键字搜索具有精确、快速的特性,但一个高性能的关键字搜索引擎除了需要Web服务器,还需要中间件服务器、应用服务器、数据库服务器的支持。以下是一个中间件型的关键字搜索引擎典型实例:




客户端通过浏览器向Web服务器请求搜索引擎程序,搜索引擎程序调用中间件进行搜索处理,这种搜索处理包括在本网站上数据库中的搜索和对Internet上其他服务器的搜索。然后中间件服务器把搜索结果返回给Web服务器上的搜索引擎程序。搜索引擎程序再将数据封装为HTMLXML返回给客户端的浏览器。

反观现在的个人网站,大多使用的是提供商提供的免费空间,没有CGI、没有ASP、没有执行和写入权限、没有数据库,还有的免费空间连1M以上的文件都不让上传(题外话),所以在个人网站上用上面的方法实现关键字搜索引擎是不现实的。我们要实现关键字搜索,就必须找到一种不需服务器端动态脚本和数据库的方法,而且它需要满足以下条件:
1.数据具有良好的结构性;
2.有方便的数据访问接口;
3.有方便的数据查找接口;
4.能够生成具有良好封装型的HTML。

我们可以通过这样一种解决方案实现以上构想:


客户端通过浏览器请求XML文档和客户端脚本语言,Web服务器像返回HTML一样返回给浏览器XML和客户端脚本,在由浏览器进行计算,得出搜索结果。这样做的优点是不需增加Web服务器的负担;缺点是XML文档在被计算之前需要完全下载到客户端,假如存储的记录太多,就会在下载上浪费很多时间(熟悉网络程序的人会发现,这实际上继承了分布式网络应用出现之前的结构)。

让我们看一看这种方案的性能:


1.数据的结构性
让我们比较一下传统数据库的表和XML











ID
Name
Phone

1
张三
61111111

2
李四
62222222

3
王五
63333333

我们从右图可以看出:XML文档有媲美数据库的良好文档结构。



2.数据访问接口
Internet Explorer中,微软提供了XML文档对象模型(XMLDOM),这样我们可以通过对XML文档对象的操作轻松访问XML文档,我们以一个存储文章信息的XML文档TECH.XML为例:
''''VBScript
Dim xmldoc
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.load "tech.xml"
以上代码段首先创建一个XML文档对象,然后调用其load方法从TECH.XML装载XML文档

3.数据查找接口
''''VBScript
Set objNodeList = xmldoc.getElementsByTagName("title")
Set objdiscList = xmldoc.getElementsByTagName("discribe")
Set objhrefList = xmldoc.getElementsByTagName("href")
这三行代码分别从XML文档对象中查找出标签为"title"、"discribe"、"href"的元素,存放到XMLDOM提供的NodeList(节点列表)对象中。

4.数据的封装型
由于IENetscape支持XML。所以可以直接显示XML,也可以在脚本程序中使用微软提供的文档对象模型(DOM)写出一定格式。

完整代码见下:

search.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>搜索</title>
<script language="VBScript">
<!--
Dim xmldoc
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.load "tech.xml"
function search()
if keyword.Value="" then
msgbox "Input the keyword first!!!"
else
key=keyword.value
document.writeln "<html><head><meta http-equiv=Content-Type content=text/html; charset=gb2312>
<title>Cyber Class
网站文章检索(从标题查询)</title></head><body>Cyber Class网站文章检索<br>
<br><table border=1 cellpadding=0 cellspacing=0 width=100% bordercolor=#000000
bordercolorlight=#000000bordercolordark=#FFFFFF><tr><td bgcolor=#108cd8><font color=#FFFFFF>
Title</font></td><td bgcolor=#108cd8><font color=#FFFFFF>Discribe</font></td><td bgcolor=#108cd8>
<font color=#FFFFFF>GO!</font></td></tr>"
Set objNodeList = xmldoc.getElementsByTagName("title")
Set objdiscList = xmldoc.getElementsByTagName("discribe")
Set objhrefList = xmldoc.getElementsByTagName("href")
For i = 0 To (objNodeList.length - 1)
if InStr(objNodeList.Item(i).Text,key)<>0 then
document.write "<tr><td>" & objNodeList.Item(i).Text & "</td>"
document.write "<td>" & objdiscList.Item(i).Text & "</td>"
document.write "<td><a href=" & objhrefList.Item(i).Text & " target=_blank>" & objhrefList.Item(i).Text &
"</a></td></tr>"
end if
Next
document.writeln "</table><a href=search.htm>
返回</a><br><br><br>注意:该查询系统

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口