module Runestone::ActiveRecord::RelationMethods

Public Instance Methods

ts_match(vector, query, dictionary: nil) click to toggle source
# File lib/runestone/active_record/relation_methods.rb, line 28
def ts_match(vector, query, dictionary: nil)
  Arel::Nodes::TSMatch.new(
    ts_vector(vector, dictionary: dictionary),
    ts_query(query, dictionary: dictionary)
  )
end
ts_query(query, dictionary: nil) click to toggle source
# File lib/runestone/active_record/relation_methods.rb, line 4
def ts_query(query, dictionary: nil)
  dictionary ||= Runestone.dictionary

  if query.is_a?(Arel::Nodes::TSQuery)
    query
  else
    Arel::Nodes::TSQuery.new(query, language: dictionary)
  end
end
ts_rank(vector, query, dictionary: nil) click to toggle source
# File lib/runestone/active_record/relation_methods.rb, line 35
def ts_rank(vector, query, dictionary: nil)
  Arel::Nodes::TSRank.new(
    ts_vector(vector, dictionary: dictionary),
    ts_query(query, dictionary: dictionary)
  )
end
ts_rank_cd(vector, query, dictionary: nil, normalization: nil) click to toggle source
# File lib/runestone/active_record/relation_methods.rb, line 42
def ts_rank_cd(vector, query, dictionary: nil, normalization: nil)
  normalization ||= Runestone.normalization
  
  Arel::Nodes::TSRankCD.new(
    ts_vector(vector, dictionary: dictionary),
    ts_query(query, dictionary: dictionary),
    normalization
  )
end
ts_vector(column_name, dictionary: nil) click to toggle source
# File lib/runestone/active_record/relation_methods.rb, line 14
def ts_vector(column_name, dictionary: nil)
  # if column_name.is_a?(String) || column_name.is_a?(Symbol)
  #   column = columns_hash[column_name.to_s]
  #   if column.type == :tsvector
  #     arel_table[column.name]
  #   else
  #     Arel::Nodes::TSVector.new(arel_table[column.name], language)
  #   end
  # else
  #   column_name
  # end
  Runestone::Model.arel_table[:vector]
end