サンプル3: ビューを使ったデータベース内の文書検索

ビューを使って文書を検索するサンプルです。 ヘルプDBの「検索」ビューは、第一列がキーワードになっているので、これをサンプルDBとして、 目的のキーワードを持つ文書を検索してみる。

Rubyで書く

  01: #!ruby -Ks
  02: require 'notes_lib'
  03:
  04: ns = Notes::NotesSession.new
  05: db = ns.database("", "help/help5_client.nsf")
  06: view = db.view("索引")
  07:
  08: KeyWord = "ACL\\表示"
  09: doc = view.get_doc_by_key(KeyWord)
  10: puts "キーワードACLを持つ文書のタイトルは「#{doc['Subject']}」"
  11: doc_list = view.get_alldocs_by_key(KeyWord)
  12: puts "キーワード:#{KeyWord}を持つ文書の数は#{doc_list.size}"
  13: index = 1
  14: doc_list.each {|doc|
  15:   puts "  #{index}:#{doc['Subject']}"
  16:   index += 1
  17: }
  

LotusScriptで書く

LotusScriptで書くと、こうなる。この辺からRubydeDominoの方がすっきりとかけるのが実感できる。

  01: Sub Click(Source As Button)
  02:   Dim ns As New NotesSession
  03:   Set db = ns.GetDatabase("", "help/help5_client.nsf")
  04:   Set view = db.GetView("索引")
  05:
  06:   Const KeyWord = "ACL\表示"
  07:   Set doc = view.GetDocumentByKey(KeyWord, True)
  08:   Print "キーワードACLを持つ文書のタイトルは「" + doc.Subject(0) + "」"
  09:   Set doc_list = view.GetAllDocumentsByKey(KeyWord, True)
  10:   Print "キーワード:" + KeyWord + "を持つ文書の数は" + Cstr(doc_list.Count)
  11:   index = 1
  12:   Set doc = doc_list.GetFirstDocument
  13:   While Not(doc Is Nothing)
  14:     Print "  "+Cstr(index) + ":" + doc.Subject(0)
  15:     Set doc = doc_list.GetNextDocument(doc)
  16:     index = index + 1
  17:   Wend
  18: End Sub