From e23b2023cbc0ac9f7d871156107556795859b05e Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Fri, 30 Nov 2018 15:42:30 +0000 Subject: [PATCH] Allow single Chinese character as a search keyword (#30037). Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@17667 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/search.rb | 3 ++- test/unit/search_test.rb | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/redmine/search.rb b/lib/redmine/search.rb index 674022151..e88736f55 100644 --- a/lib/redmine/search.rb +++ b/lib/redmine/search.rb @@ -60,7 +60,8 @@ module Redmine # 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 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 @tokens.slice! 5..-1 end diff --git a/test/unit/search_test.rb b/test/unit/search_test.rb index ab2bab1ff..a6ae15d0b 100644 --- a/test/unit/search_test.rb +++ b/test/unit/search_test.rb @@ -194,6 +194,11 @@ class SearchTest < ActiveSupport::TestCase assert_equal ['Special', 'chars', 'in a phrase Öö'], f.tokens 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 def remove_permission(role, permission) -- 2.39.5