pg_search
pg_search copied to clipboard
Option to disable ranking
There are cases when computing ranking between search results and the default order by ORDER BY rank DESC, id ASC
is not required.
Although the default ordering can be disabled with .reorder(nil)
the ranking computation itself can't be disabled.
I wish there was a an option for pg_search
's ranked_by
to disable it.
Something like: rank: false
or ranked_by: false
If I'm not mistaken it should be possible by making this optional:
https://github.com/Casecommons/pg_search/blob/ea17b19309e8e489cb637309955c5c3117bdd612/lib/pg_search/scope_options.rb#L138-L142
so that if config.ranking_sql
(which is the value of options[:ranked_by]
) is explicitly set to false
ranking can be skipped entirely.
I can try to transform this idea into a PR, let me know
fwiw i could apply my own ordering by monkey-patching PgSearch::ScopeOptions#apply
from line 21:
https://github.com/Casecommons/pg_search/blob/master/lib/pg_search/scope_options.rb#L21-L23
module PgSearch
ScopeOptions.class_eval do
def apply(scope)
scope = include_table_aliasing_for_rank(scope)
rank_table_alias = scope.pg_search_rank_table_alias(include_counter: true)
scope.joins(rank_join(rank_table_alias))
end
end
end