Class: Inquisitio::SearchUrlBuilder
- Inherits:
-
Object
- Object
- Inquisitio::SearchUrlBuilder
- Defined in:
- lib/inquisitio/search_url_builder.rb
Class Method Summary collapse
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(options = {}) ⇒ SearchUrlBuilder
constructor
A new instance of SearchUrlBuilder.
- #is_simple? ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ SearchUrlBuilder
Returns a new instance of SearchUrlBuilder.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/inquisitio/search_url_builder.rb', line 8 def initialize( = {}) @query = [:query] @filters = [:filters] || {} @q_options = [:q_options] || {} @expressions = [:expressions] || {} @arguments = [:arguments] || {} @return_fields = [:return_fields] @size = [:size] || Inquisitio.config.default_search_size @start = [:start] || 0 @sort = [:sort] || {} @q_parser = [:q_parser] || (is_simple? ? nil : :structured) end |
Class Method Details
.build(*args) ⇒ Object
4 5 6 |
# File 'lib/inquisitio/search_url_builder.rb', line 4 def self.build(*args) new(*args).build end |
Instance Method Details
#build ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/inquisitio/search_url_builder.rb', line 21 def build components = [url_root] components << (is_simple? ? simple_query : boolean_query) components << "&q.parser=#{@q_parser}" if @q_parser && Inquisitio.config.api_version == '2013-01-01' components << return_fields_query_string components << arguments components << '&q.options=' + CGI::escape(@q_options.to_json) unless @q_options.empty? @expressions.each do |name, expression| components << "&expr.#{name}=" + CGI::escape(expression) end components << "&size=#{@size}" unless @arguments[:size] components << "&start=#{@start}" unless @arguments[:start] || @start == 0 || @start == '0' components << '&sort=' + @sort.map { |k, v| "#{k}%20#{v}" }.join(',') unless @sort.empty? components.join('') end |
#is_simple? ⇒ Boolean
37 38 39 |
# File 'lib/inquisitio/search_url_builder.rb', line 37 def is_simple? @filters.empty? && Array(@query).size == 1 end |