]> source.dussan.org Git - redmine.git/commitdiff
Fix tokenization of phrases with non-ascii chars (#20730).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 9 Oct 2015 07:35:48 +0000 (07:35 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 9 Oct 2015 07:35:48 +0000 (07:35 +0000)
Patch by Jens Krämer.

git-svn-id: http://svn.redmine.org/redmine/trunk@14662 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/search.rb
test/unit/search_test.rb

index 54eab77454b5d4ac8cf16f291ab20ad556300277..99795a0d170c57a2da5f208e556aaa1ee6e750b8 100644 (file)
@@ -58,7 +58,7 @@ module Redmine
 
         # extract tokens from the question
         # eg. hello "bye bye" => ["hello", "bye bye"]
-        @tokens = @question.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
+        @tokens = @question.scan(%r{((\s|^)"[^"]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
         # tokens must be at least 2 characters long
         @tokens = @tokens.uniq.select {|w| w.length > 1 }
         # no more than 5 tokens to search for
index bd9477025940555704731ff39acf9ec8c30a74ad..b640202e846b46fcb7ed02196bf8c8ebbaedfec4 100644 (file)
@@ -190,6 +190,14 @@ class SearchTest < ActiveSupport::TestCase
     Redmine::Database.reset
   end
 
+  def test_fetcher_should_handle_accents_in_phrases
+    f = Redmine::Search::Fetcher.new('No special chars "in a phrase"', User.anonymous, %w(issues), Project.all)
+    assert_equal ['No', 'special', 'chars', 'in a phrase'], f.tokens
+
+    f = Redmine::Search::Fetcher.new('Special chars "in a phrase Öö"', User.anonymous, %w(issues), Project.all)
+    assert_equal ['Special', 'chars', 'in a phrase Öö'], f.tokens
+  end
+
   private
 
   def remove_permission(role, permission)