class Sunspot::Query::CompositeFulltext

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

Public Class Methods

new() click to toggle source
# File lib/sunspot/query/composite_fulltext.rb, line 4
def initialize
  @components = []
end