lib/pg_search/features/trigram.rb in pg_search-0.7.1 vs lib/pg_search/features/trigram.rb in pg_search-0.7.2
- old
+ new
@@ -1,26 +1,34 @@
module PgSearch
module Features
class Trigram < Feature
def conditions
- Arel::Nodes::Grouping.new(
- Arel::Nodes::InfixOperation.new("%", normalized_document, normalized_query)
- )
+ if options[:threshold]
+ Arel::Nodes::Grouping.new(
+ similarity.gteq(options[:threshold])
+ )
+ else
+ Arel::Nodes::Grouping.new(
+ Arel::Nodes::InfixOperation.new("%", normalized_document, normalized_query)
+ )
+ end
end
def rank
- Arel::Nodes::Grouping.new(
- Arel::Nodes::NamedFunction.new(
- "similarity",
- [
- normalized_document,
- normalized_query
- ]
- )
- )
+ Arel::Nodes::Grouping.new(similarity)
end
private
+
+ def similarity
+ Arel::Nodes::NamedFunction.new(
+ "similarity",
+ [
+ normalized_document,
+ normalized_query
+ ]
+ )
+ end
def normalized_document
Arel::Nodes::Grouping.new(Arel.sql(normalize(document)))
end