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?(terms, named_fields) ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ SearchUrlBuilder
Returns a new instance of SearchUrlBuilder.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/inquisitio/search_url_builder.rb', line 8 def initialize( = {}) @query_terms = [:query][:terms] @query_named_fields = [:query][:named_fields] || {} @filter_query = [:filter_query] || {} @filter_query_terms = @filter_query[:terms] || [] @filter_query_named_fields = @filter_query[:named_fields] || {} @facets = [:facets] || {} @q_options = [:q_options] || {} @expressions = [:expressions] || {} @return_fields = [:return_fields] || [] @size = [:size] || Inquisitio.config.default_search_size @start = [:start] || 0 @sort = [:sort] || {} @q_parser = [:q_parser] || (is_simple?(@query_terms, @query_named_fields) ? 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
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/inquisitio/search_url_builder.rb', line 24 def build components = [] components << 'q=' + CGI::escape(build_query(@query_terms, @query_named_fields)) if !@filter_query_terms.empty? || !@filter_query_named_fields.empty? components << 'fq=' + CGI::escape(build_query(@filter_query_terms, @filter_query_named_fields)) end components << "q.parser=#{@q_parser}" if @q_parser components << "return=#{CGI::escape(@return_fields.join(',').gsub('\'', ''))}" unless @return_fields.empty? # components << arguments @facets.each do |field,settings| components << "facet.#{field}=#{CGI::escape(settings.to_json)}" end 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}" components << "start=#{@start}" unless @start == 0 || @start == '0' components << 'sort=' + @sort.map { |k, v| "#{k}%20#{v}" }.join(',') unless @sort.empty? url_root + components.join('&') end |
#is_simple?(terms, named_fields) ⇒ Boolean
46 47 48 |
# File 'lib/inquisitio/search_url_builder.rb', line 46 def is_simple?(terms, named_fields) Array(terms).size == 1 && named_fields.empty? end |