switch fuzzy autocomplete to spellcorrect intent

This commit is contained in:
Albert Yi
2018-09-05 09:41:25 -07:00
parent 314341773c
commit 3025db66d7
2 changed files with 5 additions and 4 deletions

View File

@@ -17,7 +17,7 @@ module TagAutocomplete
query, query,
search_exact(query, 3) + search_exact(query, 3) +
search_prefix(query, 3) + search_prefix(query, 3) +
search_fuzzy(query, 3) + search_correct(query, 2) +
search_aliases(query, 3) search_aliases(query, 3)
) )
end end
@@ -38,7 +38,7 @@ module TagAutocomplete
.map {|row| Result.new(*row, nil, 1.0)} .map {|row| Result.new(*row, nil, 1.0)}
end end
def search_fuzzy(query, n=5) def search_correct(query, n=2)
if CurrentUser.id != 1 if CurrentUser.id != 1
return [] return []
end end
@@ -49,6 +49,7 @@ module TagAutocomplete
Tag Tag
.where("name % ?", query) .where("name % ?", query)
.where("abs(length(name) - ?) <= 2", query.size)
.where("name like ? escape E'\\\\'", query[0].to_escaped_for_sql_like + '%') .where("name like ? escape E'\\\\'", query[0].to_escaped_for_sql_like + '%')
.where("post_count > 0") .where("post_count > 0")
.order(Arel.sql("similarity(name, #{Tag.connection.quote(query)}) DESC")) .order(Arel.sql("similarity(name, #{Tag.connection.quote(query)}) DESC"))

View File

@@ -29,7 +29,7 @@ class TagAutocompleteTest < ActiveSupport::TestCase
end end
end end
context "#search_fuzzy" do context "#search_correct" do
setup do setup do
CurrentUser.stubs(:id).returns(1) CurrentUser.stubs(:id).returns(1)
@@ -60,7 +60,7 @@ class TagAutocompleteTest < ActiveSupport::TestCase
@tags[1], @tags[1],
@tags[2] @tags[2]
].map(&:name) ].map(&:name)
assert_equal(expected, subject.search_fuzzy("abcd", 3).map(&:name)) assert_equal(expected, subject.search_correct("abcd", 3).map(&:name))
end end
end end