Module: Exlibris::Primo::ChainGang::Search

Included in:
Search
Defined in:
lib/exlibris/primo/chain_gang/search.rb

Overview

Primo ChainGang Search

These search attributes are included in Exlibris::Primo::Search and allow for chaining methods together.

Examples

Search.new.title("Travels", "title", "contains").
      and.add_query_term("Greene", "creator", "contains").search

Defined Under Namespace

Modules: ClassAttributes

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

Dynamically sets chainable accessor for indexes and precisions Suitable for chaining, e.g.

Search.new.title_begins_with("Travels").
  creator_contains("Greene").search


84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/exlibris/primo/chain_gang/search.rb', line 84

def method_missing(method, *args, &block)
  if matches? method
    self.class.send(:define_method, method) { |value|
      index = indexize(method)
      index = (indexes_map[index] || index)
      precision = precisionize(method)
      precision = (precisions_map[precision] || precision)
      add_query_term value, index, precision
    }
    send method, *args, &block
  else
    super
  end
end

Class Method Details

.included(klass) ⇒ Object



14
15
16
17
18
# File 'lib/exlibris/primo/chain_gang/search.rb', line 14

def self.included(klass)
  klass.class_eval do
    extend ClassAttributes
  end
end

Instance Method Details

#add_adaptor_location(location) ⇒ Object

Adds an adaptor location to the search. Suitable for chaining, e.g.

Search.new.add_adaptor_location("primo_central_multiple_fe").
  add_query_term("Greene", "creator", "contains").search


302
303
304
# File 'lib/exlibris/primo/chain_gang/search.rb', line 302

def add_adaptor_location(location)
  add_location("adaptor", location)
end

#add_display_field(*args) ⇒ Object

Adds a display field (for highlighting) to the search. Suitable for chaining, e.g.

Search.new.add_display_field("creator").
  add_query_term("Greene", "creator", "contains").search


267
268
269
270
# File 'lib/exlibris/primo/chain_gang/search.rb', line 267

def add_display_field(*args)
  search_request.add_display_field(*args)
  self
end

#add_language(*args) ⇒ Object

Adds a language to the search. Suitable for chaining, e.g.

Search.new.add_language("eng").
  add_query_term("Greene", "creator", "contains").search


240
241
242
243
# File 'lib/exlibris/primo/chain_gang/search.rb', line 240

def add_language(*args)
  search_request.add_language(*args)
  self
end

#add_local_location(location) ⇒ Object

Adds a local location to the search. Suitable for chaining, e.g.

Search.new.add_local_location("scope:(VOLCANO)").
  add_query_term("Greene", "creator", "contains").search


291
292
293
# File 'lib/exlibris/primo/chain_gang/search.rb', line 291

def add_local_location(location)
  add_location("local", location)
end

#add_location(*args) ⇒ Object

Adds a location to the search. Suitable for chaining, e.g.

Search.new.add_location("local", "scope:(VOLCANO)").
  add_query_term("Greene", "creator", "contains").search


279
280
281
282
# File 'lib/exlibris/primo/chain_gang/search.rb', line 279

def add_location(*args)
  search_request.add_location(*args)
  self
end

#add_query_term(*args) ⇒ Object

Adds a query term to the search. Suitable for chaining, e.g.

Search.new.add_query_term("Travels", "title", "begins_with").
  add_query_term("Greene", "creator", "contains").search


71
72
73
74
# File 'lib/exlibris/primo/chain_gang/search.rb', line 71

def add_query_term(*args)
  search_request.add_query_term(*args)
  self
end

#add_remote_location(location) ⇒ Object

Adds a remote location to the search. Suitable for chaining, e.g.

Search.new.add_remote_location("quickset_name").
  add_query_term("Greene", "creator", "contains").search


313
314
315
# File 'lib/exlibris/primo/chain_gang/search.rb', line 313

def add_remote_location(location)
  add_location("remote", location)
end

#add_sort_by(*args) ⇒ Object

Adds a sort by to the search. Currently the Primo API only supports one sort by value. Add multiple sort bys at your own peril. Suitable for chaining, e.g.

Search.new.add_sort_by("stitle").
  add_query_term("Greene", "creator", "contains").search


255
256
257
258
# File 'lib/exlibris/primo/chain_gang/search.rb', line 255

def add_sort_by(*args)
  search_request.add_sort_by(*args)
  self
end

#andObject

Set the boolean operator for the search to “AND”. Suitable for chaining, e.g.

Search.new.add_query_term("Travels", "title", "contains").
  and.add_query_term("Greene", "creator", "contains").search


46
47
48
49
# File 'lib/exlibris/primo/chain_gang/search.rb', line 46

def and
  search_request.boolean_operator = "AND"
  self
end

#disable_did_u_meanObject

Disable “Did U Mean” functionality for the search. Suitable for chaining, e.g.

Search.new.disable_did_u_mean.add_query_term("Digital dvide", "any", "contains").
  search.did_u_mean => nil


204
205
206
207
# File 'lib/exlibris/primo/chain_gang/search.rb', line 204

def disable_did_u_mean
  request_attributes[:did_u_mean_enabled] = "false"
  self
end

#disable_highlightingObject

Disable highlighting functionality for the search. Suitable for chaining, e.g.

Search.new.disable_highlighting.add_query_term("Digital dvide", "any", "contains").
  search.did_u_mean => nil


228
229
230
231
# File 'lib/exlibris/primo/chain_gang/search.rb', line 228

def disable_highlighting
  request_attributes[:highlighting_enabled] = "false"
  self
end

#enable_did_u_meanObject

Enable “Did U Mean” functionality for the search. Suitable for chaining, e.g.

Search.new.enable_did_u_mean.add_query_term("Digital dvide", "any", "contains").
  search.did_u_mean => "digital video"


192
193
194
195
# File 'lib/exlibris/primo/chain_gang/search.rb', line 192

def enable_did_u_mean
  request_attributes[:did_u_mean_enabled] = "true"
  self
end

#enable_highlightingObject

Enable highlighting functionality for the search. Suitable for chaining, e.g.

Search.new.enable_highlighting.add_query_term("Digital dvide", "any", "contains").
  search.did_u_mean => "digital d vide"


216
217
218
219
# File 'lib/exlibris/primo/chain_gang/search.rb', line 216

def enable_highlighting
  request_attributes[:highlighting_enabled] = "true"
  self
end

#orObject

Set the boolean operator for the search to “OR”. Suitable for chaining, e.g.

Search.new.add_query_term("Travels", "title", "contains").
  or.add_query_term("Greene", "creator", "contains").search


59
60
61
62
# File 'lib/exlibris/primo/chain_gang/search.rb', line 59

def or
  search_request.boolean_operator = "OR"
  self
end

#page_size!(page_size) ⇒ Object Also known as: page_size=

Set page size for the search. Suitable for chaining, e.g.

Search.new.page_size!(10).
  add_query_term("Digital divide", "any", "contains").
    search.records.size => 10


179
180
181
182
# File 'lib/exlibris/primo/chain_gang/search.rb', line 179

def page_size!(page_size)
  request_attributes[:bulk_size] = "#{page_size}"
  self
end

#respond_to?(method, include_private = false) ⇒ Boolean

Returns true if the method can be evaluated to a method name and parameter.

Returns:

  • (Boolean)


101
102
103
104
105
106
107
# File 'lib/exlibris/primo/chain_gang/search.rb', line 101

def respond_to? method, include_private=false
  if(matches? method)
    return true
  else
    super
  end
end

#start_index!(start_index) ⇒ Object Also known as: start_index=

Set start index for the search. Suitable for chaining, e.g.

Search.new.start_index!(11).
  add_query_term("Digital divide", "any", "contains").
    search.records.first => 11th record from the search


165
166
167
168
# File 'lib/exlibris/primo/chain_gang/search.rb', line 165

def start_index!(start_index)
  request_attributes[:start_index] = "#{start_index}"
  self
end