class Sunspot::Query::CompositeFulltext
Public Class Methods
new()
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 4 def initialize @components = [] end
Public Instance Methods
add_conjunction()
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 28 def add_conjunction @components << conjunction = Conjunction.new conjunction end
add_disjunction()
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 23 def add_disjunction @components << disjunction = Disjunction.new disjunction end
add_fulltext(keywords)
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 8 def add_fulltext(keywords) @components << dismax = Dismax.new(keywords) dismax end
add_join(keywords, target, from, to)
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 13 def add_join(keywords, target, from, to) @components << join = Join.new(keywords, target, from, to) join end
add_location(field, lat, lng, options)
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 18 def add_location(field, lat, lng, options) @components << location = Geo.new(field, lat, lng, options) location end
to_params()
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 33 def to_params if @components.length == 0 {} elsif @components.length > 1 or @components.find { |c| c.is_a?(Join) } to_subquery.merge(:fl => '* score') else @components.first.to_params.merge(:fl => '* score') end end
to_subquery()
click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 43 def to_subquery return {} unless @components.any? params = @components.map(&:to_subquery).inject({:q => []}) do |res, subquery| res[:q] << subquery.delete(:q) if subquery[:q] res.merge(subquery) end params[:q] = params[:q].size > 1 ? "(#{params[:q].join(" #{connector} ")})" : params[:q].join params end