LotusDomino編寫Web瀏覽器多資料庫檢索程式

withwangzhen發表於2011-05-15

隨著計算機技術的日益普及,Internet/Intranet技術得到了更加廣泛的應用,在世界範圍的大量Web網點上以及公司內部的Web伺服器上,都存放著大量的資訊。為使這些資訊得到的合理使用,Web伺服器管理員應該為使用者提供方便的資訊檢索方法。作為群件代表的Lotus Domino整合了郵件處理、群件應用和Internet出版等功能,是Notes技術向Internet/ntranet融合開放的里程碑式的產品。在繼承以往產品全部優點與功能的基礎上,Domino將原先的Notes伺服器提升為用途更廣泛、使用更方便的Internet/Intranet伺服器。在Domino的幫助下使用者能夠快速構建安全可靠的Web網點,開發出管理和控制Internet/Intranet的應用程式,並通過Web瀏覽器實現對各類資料和伺服器的互動式訪問。Domino還為使用者提供了多種檢索資訊的方法,而且使用者甚至不必程式設計。本文所要討論的是通過簡單程式設計實現在Web瀏覽器上對任意多個資料庫同時進行檢索的一種方法。

    下面給出具體的實現方法:

1、建立資料庫SiteSearch.NSF。

2、在資料庫SiteSearch.NSF上建立Form名稱為 SearchForm。

3、在SearchForm上建立Field,內容如下:

(1)DatabaseNames:型別為關鍵字,可編輯,允許多值,範圍為:每行輸入一個關鍵字。關鍵字列表框內輸入允許搜尋的資料庫列表。假設有五個資料庫允許使用者檢索,它們分別是:討論板(Discuss.NSF)、規章制度(Institution.NSF)、技術論文(TechDocuments.NSF)、公司最新動態(CompanyNews.NSF)、簡報及公告(Bulletin.NSF),則在DatabaseNames關鍵字列表框內可輸入:

討論板 | Discuss.NSF

規章制度| Institution.NSF

技術論文| TechDocuments.NSF

公司最新動態 | CompanyNews.NSF

簡報及公告 | Bulletin.NSF

(2)SearchString:型別為文字,可編輯。

(3)$$QuerySaveAgent :型別為文字,顯示時計算,數值為textSearchQuerySaveAgent,隱藏。

(4)SaveOptions:型別為文字,可編輯,預設值為“0”,隱藏。

4、建立代理TextSearchQuerySaveAgent。執行代理時間指定為:從“操作”選單中選擇執行。指定代理操作的文件為:執行一次(可能使用@命令)。
代理程式的內容如下:

Sub Initialize Dim ArrNsf As Variant Dim item As NotesItem '獲得文件 context,因為此代理是一個$$QuerySaveAgent,所以$$QuerySaveAgent可以訪問 Context文件上的專案。 Dim sess As New NotesSession Dim doc As NotesDocument Set doc = sess.DocumentContext '輸出HTML頁面的頭部和標題: Print {<html>} Print { <head>} Print {<meta. http-equiv="Content-Type" content="text/html; charset=gb2312">} Print {<title>} Print "多資料庫搜尋" Print {title>} Print {head>} '設定HTML頁面的背景顏色: Print {<body text="000000" bgcolor="f7f7f7">} '獲得欲檢索的資料庫,存放在陣列ArrNsf內: ArrNsf= doc.DatabaseName '如果沒有輸入檢索條件,則輸出提示資訊: If Trim(Cstr(doc.Query(0)))="" Then Goto EmptyQuery End If Dim MatchDoc As NotesDocument Dim db As NotesDatabase, Dim collection As NotesDocumentCollection '下列迴圈從陣列ArrNsf中取得欲檢索的資料庫進行處理: For nsfCount=0 To Ubound( ArrNsf ) SearchDB=ArrNsf(nsfCount) Set db = sess.GetDatabase("",SearchDB) '出現錯誤則轉向: On Error Goto BadQuery '獲得滿足查詢條件的記錄集: Set collection = db.FTSearch(doc.Query(0),0) On Error Goto 0 '輸出資料庫標題: Print "
" Print db.title Print "
" '輸出該資料庫中滿足條件的記錄個數: Print "There are " & Str$(collection.Count) & " matching documentsb>font><br>"
'下列迴圈從滿足條件的記錄集中讀取記錄並輸出: For i% = 1 To collection.Count Set MatchDoc = collection.GetNthDocument(i%) Print {<br><a href="http://www.chinaitpower.com/} &SearchDB &{/AllDocument/} & MatchDoc.UniversalID" &{?OpenDocument">} Print "" '如果文件包含Subject或Title,則輸出Subject或Title: Set item =MatchDoc.GetFirstItem( "Subject" ) If ( item Is Nothing ) Then Set item = MatchDoc.GetFirstItem( "Title" ) End If If Not (item Is Nothing) Then Print " " & item.Name & ": " & item.Text End If '如果文件包含Categories,則輸出Categories: Set item = MatchDoc.GetFirstItem( "Categories" ) If Not (item Is Nothing) Then Print item.Name & ": " & item.Text End If '輸出文件產生日期和作者: createDate = MatchDoc.Created Print "Document create date:" &createDate Print " Authors: " Forall aAuthor In MatchDoc.Authors Print aAuthor End Forall Print "
" Next Next Out: Print {body>html>} Exit Sub EmptyQuery: Print {<b>Search query can not be empty b>} Resume Out BadQuery: Print {<b>Query is not understandable: b>"} & doc.Query(0) & {"} Resume Out End Sub

    在本例中使用的FTSearch搜尋查詢內容是一個符合 Notes 全文檢索規則的字串,搜尋內容可以是一個字詞或多個字詞。搜尋內容可以包括 ? 和 * 萬用字元,並且可以由! (not)、& (and)、|(or)操作符混合。所檢索的資料庫可以有全文索引,也可以沒有全文索引。如果沒有全文索引,則搜尋速度會慢一些。執行本程式時,應先從瀏覽器中輸入URL:http://homeURL/SiteSearch.NSF/SearchForm?OpenForm,然後選擇欲檢索的資料庫並輸入檢索條件,單擊Submit按鈕,則將列出所有符合檢索條件的文件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24998103/viewspace-695413/,如需轉載,請註明出處,否則將追究法律責任。

相關文章