1 class SearchController < ApplicationController
4 @data = params[:term] ? params[:term] : "beer"
5 @form_value = @data.gsub("\"",""")
6 @start = params[:start] ? params[:start].to_i : 0
7 @per_page = params[:per_page] ? params[:per_page].to_i : 20
9 #data_a = @data.split("\s") unless @data.nil?
10 data_a = split_params(@data)
13 #search_term = "@attr 2=102 #{" @and " * (data_a.size - 1)} @attr 1=1016 " + data_a.join(" @attr 1=1016 ")
14 search_term = "@attr 2=102 #{" @and " * (data_a.size - 1)} "
15 data_a.each{|t| search_term << ' @attr 1=1016 "' + t + '"'}
17 search_term = '@attr 1=4 ""'
20 conn = ZOOM::Connection.new
21 conn.connect("localhost", 9999)
22 conn.set_option('charset', 'UTF-8')
23 conn.preferred_record_syntax = 'XML'
24 conn.database_name = "zcc"
27 rset = conn.search(search_term)
28 @rset_size = rset.size
30 rset_recs = rset[@start, @per_page]
34 rset_recs.each do |rec|
37 #marc_record = ZCC.convert_char(rec)
38 ##@total_records << MARC::Record.new_from_marc(rec.raw)
44 #@total_records << marc_record
46 @total_records = MARC::XMLReader.new(StringIO.new(all))
49 @time_difference = Time.now - start_time
52 def split_params(params)
53 # Find all phrases enclosed in quotes and pull
54 # them into a flat array of phrases
55 phrases = params.scan(/"(.*?)"/).flatten
57 # Remove those phrases from the original string
58 left_over = params.gsub(/"(.*?)"/, "").squeeze(" ").strip
60 # Break up the remaining keywords on whitespace
61 keywords = left_over.split(/ /)
63 # Return one single array of key phrases