Defect #20730 » fix-tokenization-for-phrases-with-non-ascii-characte.patch
lib/redmine/search.rb | ||
---|---|---|
58 | 58 | |
59 | 59 |
# extract tokens from the question |
60 | 60 |
# eg. hello "bye bye" => ["hello", "bye bye"] |
61 |
@tokens = @question.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
|
|
61 |
@tokens = @question.scan(%r{((\s|^)"[^"]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
|
|
62 | 62 |
# tokens must be at least 2 characters long |
63 | 63 |
@tokens = @tokens.uniq.select {|w| w.length > 1 } |
64 | 64 |
# no more than 5 tokens to search for |
test/unit/search_test.rb | ||
---|---|---|
190 | 190 |
Redmine::Database.reset |
191 | 191 |
end |
192 | 192 | |
193 |
def test_fetcher_should_handle_accents_in_phrases |
|
194 |
f = Redmine::Search::Fetcher.new('No special chars "in a phrase"', User.anonymous, %w(issues), Project.all) |
|
195 |
assert_equal ['No', 'special', 'chars', 'in a phrase'], f.tokens |
|
196 | ||
197 |
f = Redmine::Search::Fetcher.new('Special chars "in a phrase Öö"', User.anonymous, %w(issues), Project.all) |
|
198 |
assert_equal ['Special', 'chars', 'in a phrase Öö'], f.tokens |
|
199 |
end |
|
200 | ||
193 | 201 |
private |
194 | 202 | |
195 | 203 |
def remove_permission(role, permission) |