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) |