如何通过使用 ASP Expression Web 中创建一个自定义的索引服务器搜索页

文章翻译 文章翻译
文章编号: 928700 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

简介

本文介绍如何通过使用 Microsoft Expression Web 中的活动服务器页面 (ASP) 创建自定义的索引服务器搜索页。

更多信息

步骤 1: 安装 Microsoft ASP.NET

然后您使用以下方法可以使用 ASP 功能 Expression Web 中,您必须安装 ASP.NET。 有关如何安装 ASP.NET 的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
928710如何安装 ASP.NET 使用 Expression Web 中的活动服务器页面 (ASP) 的功能

步骤 2: 在 Expression Web 中添加窗体页

  1. 启动 Expression Web,然后打开要为其创建搜索页的网站。
  2. 文件 菜单上指向 新建,单击 网页,然后单击 确定
  3. 插入 菜单上指向 HTML,然后单击 其他 HTML 标记
  4. 在右窗格中展开 窗体控件,然后双击 输入 (文本)、 双击 下拉框,然后双击 输入 (提交)
  5. 在 Web 页上双击插入第 4 步中的文本框。
  6. 文本框属性 对话框键入 QUERYTEXT名称 框中。
  7. 初始值 框中键入 <%=Request("QUERYTEXT")%>,然后单击 确定
  8. 在 Web 页上双击您在步骤 4 中插入的下拉框。
  9. 下拉列表框属性 对话框中键入 QUERYFIELD名称 框中。
  10. 单击 添加,然后键入在 选项 框中的 DocAppName
  11. 单击以清除 指定值 复选框,然后单击 确定
  12. 重复步骤 10 和 11 中添加以下菜单项:
    • 特征
    • 文件名
    • DocAuthor
    • DocTitle
  13. 单击 确定
  14. 用鼠标右键单击 提交 按钮,然后单击 表单属性
  15. 单击 发送到其他,然后单击 选项
  16. 操作 框中键入 <%=Request.ServerVariables("URL")%>,然后单击 确定 两次。
  17. 文件 菜单上单击 保存
  18. 文件名 框中键入 IndexServerTest.asp,然后单击 保存

步骤 3: 添加到页的示例 ASP 代码

注意如果您将本文中的示例代码粘贴到 Expression Web,您可能会收到一条错误消息。 表达式 Web 可能曲解尖括号 (&lt;)。若要变通解决此问题,将示例代码粘贴到空白的记事本文档中。然后,在记事本,中复制该代码然后将其粘贴到 Expression Web。
  1. 在右窗格的状态栏中单击 代码 以切换到 HTML 视图。
  2. Type or paste the following code before the opening HTML tag:
    <%
      ' Force variable declaration.
      Option Explicit
    
      ' Declare all our variables.
      Dim strQueryText
      Dim strQueryField
      Dim strSQL
      Dim strName
      Dim strValue
      Dim objRS
      Dim objField
    
      ' This is the list of Index Server variables that will appear.
      ' You can customize the list of fields. For more information,
      ' see Microsoft Knowledge Base article 318387.
      Const strDisplayFields = "Rank, DocAuthor, DocAppName, DocTitle, FileName, Create, Access, Characterization, VPath"
    
      ' This is the default Index Server catalog for all Web content.
      ' For information about how to customize this, see Microsoft 
      ' Knowledge Base article 318387.
    
      Const strDataSource = "WEB"
    
      ' Get the value of the user-submitted search query.
      strQueryText = Request("QUERYTEXT")
      ' Set a default value if the user has not submitted anything.
      If Len(strQueryText) = 0 Then strQueryText = "%%"
    
      ' Get the field that the user wants to query against.
      strQueryField = Request("QUERYFIELD")
      ' Set a default value if the user has not specified a field.
      If Len(strQueryField) = 0 Then strQueryField = "DocTitle"
    %>
  3. 键入或粘贴以下代码的结束标记之后:
    ' Check if the user has entered a value in the form
    If strQueryText <> "%%" Then
    <%
      ' Build the SQL statement from the user-specified options.
      strSQL = "SELECT " & strDisplayFields & " FROM SCOPE() " & _
      	"WHERE ((" & strQueryField & " LIKE '%" & strQueryText & "%') AND " & _
      	"((VPath NOT LIKE '%/_vti%') AND (VPath NOT LIKE '%/_private%')))"
    
      ' Create a recordset object.
      Set objRS = Server.CreateObject("ADODB.Recordset")
    
      ' Open the recordset by using the SQL string with the Index Server provider.
      objRS.Open strSQL,"PROVIDER=MSIDXS;DATA SOURCE=" & strDataSource
    
      ' Are there any records to show?
      If objRS.EOF Then
    
        ' Show a default message if nothing is found.
        Response.Write "No Documents were Found." & vbCrLf  
    
      ' Otherwise...
      Else
    
        ' Start a table.
        Response.Write "<table border=""1"">" & vbCrLf
    
        ' Start the row for the header section.
        Response.Write "<tr>" & vbCrLf
        ' Loop through the fields collection.
        For Each objField in objRS.Fields
          ' Get the field's name.
          strName  = objField.Name
          ' If the field has a name, escape it for HTML.
          If Len(strName)  > 0 Then strName = Server.HTMLEncode(strName)
          ' Output the field name as a table header.
          Response.Write "<th>" & strName & "</th>" & vbCrLf
        Next
        ' End the row for the header section.
        Response.Write "</tr>" & vbCrLf   
    
        ' Loop through all the records.
        While Not objRS.EOF
          ' Start a row in the data section.
          Response.Write "<tr>" & vbCrLf
          ' Loop through the fields collection.
          For Each objField in objRS.Fields
            ' Get the field's value.
            strValue = objField.Value
            ' Look for null values.
            If Len(strValue) > 0 Then
              ' If the value is not null, escape it for HTML.
              strValue = Server.HTMLEncode(strValue)
            Else
              ' Otherwise, make it a non-breaking space character.
              strValue = "&#xa0;"
            End If
          ' Output the field value as table data.
            Response.Write "<td>" & strValue & "</td>" & vbCrLf
          Next
          ' End a row in the data section.
          Response.Write "</tr>" & vbCrLf
          ' Move on to the next record.
          objRS.MoveNext
         Wend
         Response.Write "</table>" & vbCrLf
      End If
    %>
    Else
    ' User has not entered any value in search form
        Response.Write "Please enter a Search Term before submitting the form" & vbCrLf
    End if
  4. 文件 菜单上单击 保存

步骤 4: 测试示例 ASP 页

  1. 启动 Expression Web,然后打开 IndexServerTest.asp 页。
  2. 文件 菜单上指向 在浏览器中的预览,然后单击您要使用的浏览器。
  3. 在文本框中键入您的搜索条件。在列表中单击您要查询的字段。
  4. 单击 提交。在页上表中显示与查询匹配的任何结果。

第 5 步: 自定义示例 ASP 页

若要自定义示例 ASP 页中使用下列方法之一。

方法 1: 更改目录

如果在 Web 服务器上定义了多个索引服务器目录,您可以配置为使用不同的目录在示例页。若要这样做,请按照下列步骤操作:
  1. 启动 Expression Web,然后打开示例 ASP 页,您在本文前面部分创建。
  2. 单击 代码 以切换到 HTML 视图。
  3. 找到下面的代码行:
    Const strDataSource = "WEB"
  4. strDataSource 变量的值更改为您的目录的名称。例如对于行将类似于下面的代码:
    Const strDataSource = My_Custom_Catalog
  5. 文件 菜单上单击 保存,然后关闭文件。

方法 2: 修改域列表

  1. 启动 Expression Web,然后打开您在本文前面部分创建的示例网页。
  2. 单击 代码 以切换到 HTML 视图。
  3. 查找类似于下面的代码的代码行:
    Const strDisplayFields = "Rank, DocAuthor, DocAppName"
  4. 更改值的列表。用逗号分隔每个字段的名称。 例如对于行将类似于下面的代码:
    Const strDisplayFields = "Rank, DocAuthor, DocAppName, DocTitle"
  5. 文件 菜单上单击 保存,然后关闭文件。
下表列出了可用于 strDisplayFields 变量的值。
收起该表格展开该表格
字段名称字段类型说明
访问日期/时间访问该文件的最后一次
特征文本/字符串特征或抽象,文档为索引服务器通过计算的
创建日期/时间创建该文件的时间
目录文本/字符串该文件不包括文件名的物理路径
DocAppName文本/字符串创建该文件的应用程序的名称
DocAuthor文本/字符串该文档的作者
DocByteCount数字在文档中的字节数
DocCategory文本/字符串类型的文档中的如一个备注、 日程安排,或白皮书
DocChar计数数字在文档中的字符数
DocComments文本/字符串有关将文档注释
DocCompany文本/字符串编写文档所针对公司的名称
DocCreatedTm日期/时间创建文档的时间
DocEditTime日期/时间编辑文档需要花费的总时间
DocHiddenCount数字在 Microsoft PowerPoint 演示文稿中的隐藏幻灯片数
DocKeywords文本/字符串文档关键字
DocLastAuthor文本/字符串最近编辑文档的用户
DocLastPrinted日期/时间上次打印文档的时间
DocLastSavedTm日期/时间上一次保存文档的时间
DocLineCount数字在文档中包含的行数
DocManager文本/字符串文档的作者的经理的姓名
DocNoteCount数字在 PowerPoint 演示文稿中具有备注的页数
DocPageCount数字在文档中的页数
DocParaCount数字在文档中的段落数
DocPartTitles文本/字符串文档部件的名称。例如对于在 Microsoft Excel 电子表格是一个文档的一部分。在 Microsoft PowerPoint 幻灯片是一个文档的一部分。在 Microsoft Word 中的主控文档中包含的文档的文件名是文档部分。
DocPresentationTarget文本/字符串PowerPoint 演示文稿的目标格式 (如 35 毫米、 打印机,或视频中)
DocRevNumber文本/字符串当前文档的版本数
DocSlideCount数字PowerPoint 演示文稿中幻灯片的编号
DocSubject文本/字符串文档的主题
DocTemplate文本/字符串该文档的模板的名称
DocTitle文本/字符串文档的标题
DocWordCount数字在文档中的单词数
FileIndex数字该文件的唯一 ID
文件名文本/字符串该文件的名称
HitCount数字命中次数,或与该文件中的某个查询相匹配的单词数
路径文本/字符串该文件包括文件名的完整物理路径
数字行的排位。此值的范围从 0 到 1000年。较大的数字表明更好的匹配项。
ShortFileName文本/字符串短 (8.3) 文件名
大小数字以字节为单位) 文件的大小
VPath文本/字符串包含文件名称的文件的完全虚拟路径。如果有多个可能的路径是选择特定的查询的最佳匹配。
写入日期/时间写入该文件的最后一次

故障排除

  • 如果索引服务未运行,您会收到以下错误消息:
    Microsoft OLE DB 提供程序的索引服务错误"80041820"服务未运行。 / IndexServerTest.asp,行 44
    若要解决此问题,启动 $ 索引服务。
  • 如果您指定的是无效目录,您收到错误消息类似于以下错误消息:
    Microsoft OLE DB 提供程序的索引服务错误 '8004181d"有是没有编录。/ IndexServerTest.asp,行 44
    若要解决此问题,检查 strDataSource 变量的值。如果正确重新启动索引服务。

参考

有关如何使用 Microsoft Windows 2000 索引服务的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
185985使用索引服务器查询并显示 META TAG 信息
256276错误消息: 没有任何编录
229282ASP 代码是可见的当您查看某个索引服务器结果页的源

属性

文章编号: 928700 - 最后修改: 2006年12月11日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Expression Web
关键字:?
kbmt kbexpertiseinter kbhowto KB928700 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 928700
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com