From f88cb1340a02e2526219daf7cf2825d63bec5fe8 Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Wed, 5 Sep 2018 11:08:22 -0700 Subject: [PATCH] tweak result counts for autocomplete --- app/logical/tag_autocomplete.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/logical/tag_autocomplete.rb b/app/logical/tag_autocomplete.rb index 7a3fd8d78..8d2a2ac52 100644 --- a/app/logical/tag_autocomplete.rb +++ b/app/logical/tag_autocomplete.rb @@ -2,7 +2,7 @@ module TagAutocomplete extend self PREFIX_BOUNDARIES = "(_/:;-" - LIMIT = 10 + LIMIT = 12 class Result < Struct.new(:name, :post_count, :category, :antecedent_name, :weight) def to_xml(options = {}) @@ -15,17 +15,17 @@ module TagAutocomplete candidates = count_sort( query, - search_exact(query, 3) + - search_prefix(query, 3) + + search_exact(query, 8) + + search_prefix(query, 4) + search_correct(query, 2) + - search_aliases(query, 3) + search_aliases(query, 6) ) end def count_sort(query, words) - words.uniq.slice(0, LIMIT).sort_by do |x| + words.uniq.sort_by do |x| x.post_count * x.weight - end.reverse + end.reverse.slice(0, LIMIT) end def search_exact(query, n=4) @@ -49,7 +49,7 @@ module TagAutocomplete Tag .where("name % ?", query) - .where("abs(length(name) - ?) <= 2", query.size) + .where("abs(length(name) - ?) <= 3", query.size) .where("name like ? escape E'\\\\'", query[0].to_escaped_for_sql_like + '%') .where("post_count > 0") .order(Arel.sql("similarity(name, #{Tag.connection.quote(query)}) DESC"))