class PgSearch::Features::Trigram
Public Class Methods
valid_options()
click to toggle source
Calls superclass method
PgSearch::Features::Feature::valid_options
# File lib/pg_search/features/trigram.rb, line 6 def self.valid_options super + %i[threshold word_similarity] end
Public Instance Methods
conditions()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 10 def conditions if options[:threshold] Arel::Nodes::Grouping.new( similarity.gteq(options[:threshold]) ) else Arel::Nodes::Grouping.new( Arel::Nodes::InfixOperation.new( infix_operator, normalized_query, normalized_document ) ) end end
rank()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 26 def rank Arel::Nodes::Grouping.new(similarity) end
Private Instance Methods
infix_operator()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 44 def infix_operator if word_similarity? "<%" else "%" end end
normalized_document()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 62 def normalized_document Arel::Nodes::Grouping.new(Arel.sql(normalize(document))) end
normalized_query()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 66 def normalized_query sanitized_query = connection.quote(query) Arel.sql(normalize(sanitized_query)) end
similarity()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 52 def similarity Arel::Nodes::NamedFunction.new( similarity_function, [ normalized_query, normalized_document ] ) end
similarity_function()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 36 def similarity_function if word_similarity? "word_similarity" else "similarity" end end
word_similarity?()
click to toggle source
# File lib/pg_search/features/trigram.rb, line 32 def word_similarity? options[:word_similarity] end