switch fuzzy autocomplete to spellcorrect intent
This commit is contained in:
@@ -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"))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user