From f79ec54235b75d81c75d8fc5cdf38efc1f87c141 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 19 Jul 2007 01:32:49 +0000 Subject: [PATCH] got threading to really work! inserted puts diagnostics to let the user know how the search is progressing. if a thread dies there is a rudimentary rescue block. fixed one small but important bug in the string created for title searches. git-svn-id: svn+ssh://rubyforge.org/var/svn/zcc/trunk@225 695555e7-a3f4-42c9-822d-1d0ed3746087 --- bin/zcc-new | 2 +- lib/zcc/query.rb | 61 ++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/bin/zcc-new b/bin/zcc-new index 3d78025..206fdfc 100644 --- a/bin/zcc-new +++ b/bin/zcc-new @@ -94,7 +94,7 @@ loop { #puts "searching the following servers: #{servers.join("...\n")}" #puts "gets here" query = Query.new(search_term, servers) - results = query.search(25) + results = query.search(10) #print "results.class" ; puts results.class if results.records.empty? puts "There are no results from group #{group} servers!\n\n\n" diff --git a/lib/zcc/query.rb b/lib/zcc/query.rb index 8332405..46945a1 100644 --- a/lib/zcc/query.rb +++ b/lib/zcc/query.rb @@ -29,10 +29,11 @@ module ZCC #puts "searching for title:#{term}" @term = term @type = 'title' - @zsearch = "@attr 1=4 \"'#{@term}''\"" + @zsearch = "@attr 1=4 \"#{@term}\"" #was: "@attr 1=4 \"'#{@term}'\"" #puts self.term #puts self.type #puts self.zsearch + #STDIN.gets end end @@ -47,31 +48,43 @@ module ZCC self.zservers.each do |server| #zservers are made up of... #puts server.to_s - search_threads << Thread.new do - - conn = ZOOM::Connection.new - conn.connect(server.host, server.port) #do |conn - conn.set_option('charset', 'UTF-8') - conn.preferred_record_syntax = 'MARC21' - conn.database_name = server.database - puts "Searching: #{server.to_s}" - rset = conn.search(self.zsearch) - puts "Finished searching: #{server.to_s}" - rset_recs = rset[0, show] - #puts "rset_recs in query.search: " - #puts rset_recs - rset_recs.each do |rec| - marc_record = ZCC.convert_char(rec) - #puts "-------------\n" - #puts marc_record - #puts "---------------\n" - zcc_record = Record.new(marc_record, server) - result_set.ingest(zcc_record) - end - puts "Results returned from: #{server.to_s}" + search_threads << Thread.new(server) do |myserver| + begin + #puts "start: #{Thread.list}" + conn = ZOOM::Connection.new + conn.connect(myserver.host, server.port) #do |conn + conn.set_option('charset', 'UTF-8') + conn.preferred_record_syntax = 'MARC21' + conn.database_name = myserver.database + puts "Searching: #{myserver.to_s}" + rset = conn.search(self.zsearch) + puts "Finished searching: #{myserver.to_s} | rset.size: #{rset.size}" + rset_recs = rset[0, show] + #puts "rset_recs in query.search: " + #puts rset_recs + i = 0 + rset_recs.each do |rec| + puts "processing record #{i} from #{myserver}..." + #puts myserver.to_s + #puts rec + #puts + marc_record = ZCC.convert_char(rec) + #puts "-------------\n" + #puts marc_record + #puts "---------------\n" + zcc_record = Record.new(marc_record, myserver) + result_set.ingest(zcc_record) + i += 1 + end + rescue + puts "The #{myserver} thread died!!" + end + #puts "end: #{Thread.list}" + puts "Results processed from: #{myserver.to_s}" end - search_threads.each{|thread| thread.join} + end + search_threads.each{|thread| thread.join} return result_set end -- 2.11.4.GIT