如何使用 ASP 運算式 Web 中建立自訂的索引伺服器搜尋網頁

文章翻譯 文章翻譯
文章編號: 928700 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

本文將告訴您,如何藉由使用 [Microsoft 運算式 Web 中的 [動態伺服器網頁 (ASP) 建立自訂的索引伺服器搜尋網頁。

其他相關資訊

步驟 1: 安裝 Microsoft ASP.NET

您可以在運算式網頁中使用 ASP 功能之前,您必須安裝 ASP.NET。 如需有關如何安裝 ASP.NET,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
928710如何安裝 ASP.NET 可以使用動態伺服器網頁 (ASP) 功能在運算式的網頁

步驟 2: 在運算式的網頁新增表單頁面

  1. 啟動運算式 Web,然後開啟您要建立搜尋網頁的網站。
  2. 在 [檔案] 功能表上指向 [新增],按一下 [網頁,然後再按一下 [確定]]。
  3. 在 [插入] 功能表上指向 [HTML,然後再按一下 [其他 HTML 標籤
  4. 在右窗格中中, 展開 [表單控制項,和再連按兩下 輸入 (文字),按兩下 下拉式方塊,再連按兩下 輸入 (送出)
  5. 在網頁上連按兩下您在步驟 4 中所插入的文字方塊]。
  6. 在 [文字方塊內容] 對話方塊,鍵入 QUERYTEXT 在 [名稱] 方塊中。
  7. 在 [起始值] 方塊中,輸入 <%=Request("QUERYTEXT")%>,然後按一下 [確定]
  8. 在網頁上連按兩下您在步驟 4 中插入下拉式方塊]。
  9. 拖放 Down 方塊內容] 對話方塊中,輸入 QUERYFIELD 在 [名稱] 方塊中。
  10. 按一下 [新增],並在 [選擇] 方塊中鍵入 DocAppName
  11. 按一下以清除 [指定值] 核取方塊,然後按一下 [確定]
  12. 重複步驟 10 和 11 以加入下列功能表項目:
    • 特徵
    • 檔案名稱
    • DocAuthor
    • DocTitle
  13. 按一下 [確定]
  14. 以滑鼠右鍵按一下 [送出] 按鈕,然後按一下 [表單內容
  15. 按一下 [傳送至其他,然後按一下 [選項]。
  16. 在 [動作] 方塊中,輸入 <%=Request.ServerVariables("URL")%>,然後按兩次 [確定]
  17. 在 [檔案] 功能表上按一下 [儲存]。
  18. 檔案名稱] 方塊中輸入 IndexServerTest.asp,然後按一下 [儲存]。

步驟 3: 新增至網頁的範例 ASP 程式碼

附註如果範例程式碼從本文貼入運算式 Web,可能會收到錯誤訊息。 運算式 Web 可能會錯誤解譯角括弧 (<)。若要解決這個問題,請將範例程式碼貼至空白的記事本文件。然後,在 [記事本] 中, 複製程式碼,並再將它貼至運算式 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. 啟動運算式 Web,然後開啟 [IndexServerTest.asp] 頁面。
  2. 在 [檔案] 功能表上指向 [在瀏覽器中的預覽],然後按一下您想要使用的瀏覽器]。
  3. 在 [文字] 方塊鍵入您的搜尋準則。在清單按一下 [您想要查詢的欄位]。
  4. 按一下 [送出]。任何符合您的查詢的結果會出現在頁面上的表格。

步驟 5: 自訂範例 ASP 網頁

請使用下列方法之一,來自訂範例 ASP 網頁。

方法 1: 變更型錄

如果在 Web 伺服器上定義多個索引伺服器類別目錄,您可以設定範例頁面,以使用不同的類別目錄。要這麼做,請您執行下列步驟:
  1. 啟動運算式 Web,然後再開啟範例 ASP 網頁您先前在本文中所建立。
  2. 按一下 [切換至 HTML 檢視 程式碼]。
  3. 找出下列程式碼行:
    Const strDataSource = "WEB"
  4. strDataSource 變數的值變更為您的資料庫目錄名稱。行類似下列的程式碼的例如:
    Const strDataSource = My_Custom_Catalog
  5. 在 [檔案] 功能表上按一下 [儲存檔案,然後再關閉 [檔案]。

方法 2: 修改欄位] 清單中

  1. 啟動運算式 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數字檔案的專一識別碼
檔案名稱文字/字串檔案名稱
叫用次數數字命中或符合查詢檔案中的字的數目
路徑文字/字串之項包括檔案名稱的檔案之完整實體路徑
陣序規範數字資料列的陣序規範。這個值的範圍從 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錯誤訊息: 沒有任何類別目錄
229282當您檢視索引伺服器搜尋結果網頁的來源時,會看到 ASP 程式碼

屬性

文章編號: 928700 - 上次校閱: 2006年12月11日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Expression Web
關鍵字:?
kbmt kbexpertiseinter kbhowto KB928700 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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