zoukankan      html  css  js  c++  java
  • Win2000索引服务的WEB应用

    摘要 在WWW上面有很多全文数据检索工具即搜索引擎(Search Engine),如Yahoo、新浪、网易等。微软公司在Win2000里提供了一个工具Index Server,可以在自己的网站内部架设站
    内的搜索引擎,即通过Web Server(IIS)与Index Server的交互,建立自己的搜索引擎。关键字 Win2000 IIS Index Server ASP ADO 全文检索

    1 前言

    在网络时代,通过输入关键字,就能查到自己感兴趣的资料,如果你制作了你自己网站,又想提供站内的搜索功能,你就可以自己动手做一套属于你自己的站内搜索系统。Windows2000提供
    了索引服务,缺省为未安装,通过在控制面板上的服务设置打开Index Server服务以后,就等于拥有了一套个人专属的搜索引擎。 通过设置,大部分的时候都不需要人工干预, 在预设的情况
    下,系统负担较轻时,Index Server就会找出系统指定的文件夹,一般是预设的WEB站点及预设的FTP站点下所有的虚拟目录以及自己指定的硬盘上的文件夹,接着建立及维护存储文件的目录信息。当设置好Index Server以后,在前端输入查询条件,Index Server就会搜索这份索引,然后以HTML的格式传回到前端,因为Index Server事先会建立文件索引, 搜索的速度将比全文本的搜索快很多。

    2 Index Server的对象和属性
    2.1 被索引的文件类型
    在WEB服务器下的所有文件,Index Server一般都会建立一份索引,这些文件有HTML文件、ASP文件、Help File文件、文本文件以及Office软件制作的文件等,甚至可以是非文本的文件
    类型,如可执行文件,当然,对这些文件无法通过有意义的文字来查询。
    在实际运用中,我们一般关心的文件是文本类型文件,如网页等,基本上Index Server也能够满足一般的应用要求。
    2.2 Index Server查询规则
    (1) 不区分大小写。
    (2) 如果包含特殊字符如双引号或者其他特殊字符如逗号,惊叹号等,必须要用双引号将字符
    包含起来。
    (3) 多条件查询可以用逗号将关键字分开。
    (4) 支持布尔运算符,例如AND、OR、NOT、NEAR、<、>等等。
    2.3 Index Server查询对象
    在Windows2000中,Index Server查询对象包含在Ixxso.dll之中,叫做Indexing Service Server Side Object,即SSO,提供了建立及管理Recrodsets和查询的控制,利用SSO获得Index Server建立的目录及文件索引,再用后端的描述语言VBScript或者javascript格式化传回前端。
    SSO对象
    Query对象

    属性名称 数据类型 功能描述
    AllowEnumeration Boolean 是否允许递归搜索目录索引,缺省是False
    CiScope String 指定搜索的路径,多于一个路径的话用逗号分开
    Columns String 从OLE DB Recordset取出的字段
    MaxRecords Long 希望取得的记录数
    Query String 查询限制条件
    SortBy String 根据哪个字段排序

    Query方法 Method
    方 法 功 能 描 述
    CreateRecordset 建立ADORecordset,有sequential和nonsequential
    DefineColumn 给查询的字段定义一个别名
    QueryToUrl 转换为URL参数
    SetQueryFromURL 设定Query对象及相关内容

    Utility对象
    方 法 描 述
    AddScopeToQuery 加入查询路径
    HTMLEncode 给指定的字符串按照HTML编码
    URLEncode 按照URL编码规则应用到给定的字符串

    可用的文件信息
    属性名称 功 能 功 能 描 述
    Characterization 文件的摘要
    DocAuthor 文件的作者
    Rank 排名
    DocSubject 文件的主题
    DocTitle 文件的标题
    FileName 文件名
    Vpath 文件的完整虚拟路径
    Size 文件大小(BYTE)

    3 分页检索部分源代码

     


    <%
    Response.Buffer 
    = True

    MySelf 
    = Request.ServerVariables( "PATH_INFO" )
    Page 
    = CLng(Request( "Page"
     ))
    Path 
    = Request( "Path"
     )
    Keyword 
    = Request( "Keyword"
     )
    MaxRecords 
    = CLng( Request( "MaxRecords"
     ) )

    If Page <= 0 Then Page = 1

    If Keyword = Empty Then Keyword = "新华网湖南频道"
    If MaxRecords <= 0 Then MaxRecords = 50
    Param 
    = "&Keyword=" & Server.HTMLEncode(Keyword)
    Param 
    = Param & "&Path=" &
     Server.HTMLEncode(Path)
    Param 
    = Param & "&MaxRecords=" &
     MaxRecords
    %
    >

    <HTML>
    <BODY>
    <H2>Index Server 搜索引擎<HR></H2>
    <FORM Action=<%=Myself%> METHOD=GET>
    关键字:
    <INPUT Type=Text Name=Keyword Value="<%=Keyword%>"><BR>
    路 径:
    <INPUT Type=Text Name=Path Value="<%=Path%>">
    (可省略,输入详细路径如
    /news/2001-10-18)<BR>
    最大文件数:
    <INPUT Type=Text Name=MaxRecords Value="<%=MaxRecords%>"><BR>
    <INPUT Type=Submit Name=Send Value=" 搜 索 ">
    </FORM>
    <%
    If Request ("Send"<> Empty Or Request ("Page"<> Empty Then

    Set Q = Server.CreateObject ("ixsso. Query") ‘建立Query对象
    If Path <> Empty Then
     
    Set U = Server.CreateObject ("ixsso. Util"
    ) ‘建立Util 对象
    U.AddScopeToQuery Q, Path, 
    "deep"
     ‘设置查询方式和路径
    End If

    Q.Query 
    = Keyword ‘关键字
    Q.SortBy 
    = "rank[d]"
     ‘排序方式
    Q.Columns 
    = "DocTitle, Characterization, Rank, VPath, Write, Size"
     需要的字段
    Q.MaxRecords 
    =
     MaxRecords ‘最大纪录数
    Set rs = Q.CreateRecordSet("nonsequential") ‘建立记录集%>

    <HR>
    <BLOCKQUOTE>
    <%
    Rs.PageSize 
    = 5

    If Page < 1 Then Page = 1
    If Page > rs.PageCount Then Page = rs.PageCount
    If Page <= 0 Then

    Msg 
    = "搜索结果:没有找到任何符合条件的文件!" 
    Msg 
    =
     Server.HTMLEncode( Msg )
    Response.Clear
    Response.Redirect Myself 
    & "?Msg=" & Msg &
     Param
    End If

    rs.AbsolutePage 
    = Page
    For iPage = 1 To
     rs.PageSize
    RecNo 
    = (Page - 1* rs.PageSize +
     iPage
    %
    >

    <B><%=RecNo & ""%><%=rs("DocTitle")%></B><BR>
    <B>摘要:</B><%=rs("Characterization")%><BR>
    <B>网址:</B><A HREF=<%=rs("vPath")%>><%=rs("vPath")%></A><BR>
    <B>时间: </B><%=rs("Write")%><BR>
    <B>大小: </B><%=rs("Size")%><P>
    <% rs.MoveNext
    If rs.EOF Then Exit For

    Next
    %
    ></TABLE></BLOCKQUOTE>
    <DIV ALIGN=right><FORM Action=<%=Myself%> Method=GET><HR>
    <%If Page <> 1 Then ' 如果不是位于第一页 %>
    <A HREF=<%=Myself%>?Page=1<%=Param%>>第一页</A> 
    <A HREF=<%=Myself%>?Page=<%=(Page-1)%><%=Param%>>上一页</A>
     
    <%End If

    If Page <> rs.PageCount Then ' 如果不是位于最后一页%>
    <A HREF=<%=Myself%>?Page=<%=(Page+1)%><%=Param%>>下一页</A> 
    <A HREF=<%=Myself%>?Page=<%=rs.PageCount%><%=Param%>>最后一页</A>
     
    <%End If%>

    输入页号:
    <INPUT TYPE=TEXT Name=Page SIZE=3>
    页号:
    <FONT COLOR="Red"><%=Page%>/<%=rs.PageCount%></FONT>
    </FORM></P></DIV>
    <%End If%>
    <%If Request("Msg"<> Empty Then %>
    <HR><FONT Color=Red><%=Request("Msg")%></FONT>
    <%End If%>
    </BODY>
    </HTML>

     

     4 小结
    通过运用index sever对象属性,就可以达到站内搜索功能的很好效果,增加了网站的功能,不
    需要外部的搜索,提高了查找效率,方便了网站浏览,在网站的运行里面,该搜索系统表现良好,速
    度也很快,界面也很类似我们经常使用的互联网上一些著名的搜索引擎。
    参考文献
    微软公司 http://www.microsoft.com/
    清华大
    学出版社 廖信彦著,ASP应用大全-ASP与数据库整合,2000年.

    轉自:http://www.eliu.info/js161.asp

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    前端和后端的区别和分工
    IntelliJ和tomcat中的目录结构
    JAVA开发环境和IntelliJ工具安装
    Linux下Python+Selenium自动化模拟用户登录(备注:记录一次强行卸载rpm依赖包,引发的rpm、yum等命令异常,无法远程xftp工具)
    Docker 操作命令梳理(镜像下载、容器创建、Dockerfile)
    Centos 6.6 Docker安装(内网坏境)
    C# 连接Access2010 数据库之初探
    C#使用NLog记录日志
    现实两种
    C#中的两把双刃剑:抽象类和接口
  • 原文地址:https://www.cnblogs.com/Athrun/p/825463.html
Copyright © 2011-2022 走看看