lib/pg_search/features/tsearch.rb in pg_search-0.7.4 vs lib/pg_search/features/tsearch.rb in pg_search-0.7.5
- old
+ new
@@ -52,29 +52,12 @@
tsquery_terms = query_terms.map { |term| tsquery_for_term(term) }
tsquery_terms.join(options[:any_word] ? ' || ' : ' && ')
end
def tsdocument
- tsdocument_terms = []
-
- columns_to_use = options[:tsvector_column] ?
- columns.select { |c| c.is_a?(PgSearch::Configuration::ForeignColumn) } :
- columns
-
- if columns_to_use.present?
- tsdocument_terms << columns_to_use.map do |search_column|
- tsvector = Arel::Nodes::NamedFunction.new(
- "to_tsvector",
- [dictionary, Arel.sql(normalize(search_column.to_sql))]
- ).to_sql
-
- if search_column.weight.nil?
- tsvector
- else
- "setweight(#{tsvector}, #{connection.quote(search_column.weight)})"
- end
- end.join(" || ")
+ tsdocument_terms = (columns_to_use || []).map do |search_column|
+ column_to_tsvector(search_column)
end
if options[:tsvector_column]
column_name = connection.quote_column_name(options[:tsvector_column])
tsdocument_terms << "#{quoted_table_name}.#{column_name}"
@@ -104,9 +87,30 @@
options[:dictionary] || :simple
end
def arel_wrap(sql_string)
Arel::Nodes::Grouping.new(Arel.sql(sql_string))
+ end
+
+ def columns_to_use
+ if options[:tsvector_column]
+ columns.select { |c| c.is_a?(PgSearch::Configuration::ForeignColumn) }
+ else
+ columns
+ end
+ end
+
+ def column_to_tsvector(search_column)
+ tsvector = Arel::Nodes::NamedFunction.new(
+ "to_tsvector",
+ [dictionary, Arel.sql(normalize(search_column.to_sql))]
+ ).to_sql
+
+ if search_column.weight.nil?
+ tsvector
+ else
+ "setweight(#{tsvector}, #{connection.quote(search_column.weight)})"
+ end
end
end
end
end