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
-
#add_adaptor_location(location) ⇒ Object
Adds an adaptor location to the search.
-
#add_display_field(*args) ⇒ Object
Adds a display field (for highlighting) to the search.
-
#add_language(*args) ⇒ Object
Adds a language to the search.
-
#add_local_location(location) ⇒ Object
Adds a local location to the search.
-
#add_location(*args) ⇒ Object
Adds a location to the search.
-
#add_query_term(*args) ⇒ Object
Adds a query term to the search.
-
#add_remote_location(location) ⇒ Object
Adds a remote location to the search.
-
#add_sort_by(*args) ⇒ Object
Adds a sort by to the search.
-
#and ⇒ Object
Set the boolean operator for the search to “AND”.
-
#disable_did_u_mean ⇒ Object
Disable “Did U Mean” functionality for the search.
-
#disable_highlighting ⇒ Object
Disable highlighting functionality for the search.
-
#enable_did_u_mean ⇒ Object
Enable “Did U Mean” functionality for the search.
-
#enable_highlighting ⇒ Object
Enable highlighting functionality for the search.
-
#method_missing(method, *args, &block) ⇒ Object
Dynamically sets chainable accessor for indexes and precisions Suitable for chaining, e.g.
-
#or ⇒ Object
Set the boolean operator for the search to “OR”.
-
#page_size!(page_size) ⇒ Object
(also: #page_size=)
Set page size for the search.
-
#respond_to?(method, include_private = false) ⇒ Boolean
Returns true if the method can be evaluated to a method name and parameter.
-
#start_index!(start_index) ⇒ Object
(also: #start_index=)
Set start index for the search.
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 |
#and ⇒ Object
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_mean ⇒ Object
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_highlighting ⇒ Object
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_mean ⇒ Object
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_highlighting ⇒ Object
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 |
#or ⇒ Object
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.
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 |