Class: Inquisitio::SearchUrlBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/inquisitio/search_url_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

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(options = {})
  @query = options[:query]
  @named_fields = options[:named_fields] || {}
  @q_options = options[:q_options] || {}
  @expressions = options[:expressions] || {}
  @arguments = options[:arguments] || {}
  @return_fields = options[:return_fields] || []
  @size = options[:size] || Inquisitio.config.default_search_size
  @start = options[:start] || 0
  @sort = options[:sort] || {}
  @q_parser = options[: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

#buildObject



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=#{CGI::escape(@return_fields.join(',').gsub('\'', ''))}" unless @return_fields.empty?
  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

Returns:

  • (Boolean)


37
38
39
# File 'lib/inquisitio/search_url_builder.rb', line 37

def is_simple?
  @named_fields.empty? && Array(@query).size == 1
end