Commit 8ecfae7a authored by maeda's avatar maeda

Allow single Chinese character as a search keyword (#30037).

Patch by Go MAEDA.


git-svn-id: https://svn.redmine.org/redmine/trunk@17667 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 62ac8daf
...@@ -60,7 +60,8 @@ module Redmine ...@@ -60,7 +60,8 @@ module Redmine
# eg. hello "bye bye" => ["hello", "bye bye"] # eg. hello "bye bye" => ["hello", "bye bye"]
@tokens = @question.scan(%r{((\s|^)"[^"]+"(\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 must be at least 2 characters long
@tokens = @tokens.uniq.select {|w| w.length > 1 } # but for Chinese characters (汉字/漢字), tokens can be one character
@tokens = @tokens.uniq.select {|w| w.length > 1 || w =~ /\p{Han}/ }
# no more than 5 tokens to search for # no more than 5 tokens to search for
@tokens.slice! 5..-1 @tokens.slice! 5..-1
end end
......
...@@ -194,6 +194,11 @@ class SearchTest < ActiveSupport::TestCase ...@@ -194,6 +194,11 @@ class SearchTest < ActiveSupport::TestCase
assert_equal ['Special', 'chars', 'in a phrase Öö'], f.tokens assert_equal ['Special', 'chars', 'in a phrase Öö'], f.tokens
end end
def test_fetcher_should_exclude_single_character_tokens_except_for_chinese_characters
f = Redmine::Search::Fetcher.new('ca f é 漢 あ 한', User.anonymous, %w(issues), Project.all)
assert_equal ['ca', '漢'], f.tokens
end
private private
def remove_permission(role, permission) def remove_permission(role, permission)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment