diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php index 2246dc0aef..ee8a65610d 100644 --- a/phpBB/phpbb/search/fulltext_native.php +++ b/phpBB/phpbb/search/fulltext_native.php @@ -253,6 +253,16 @@ class fulltext_native extends \phpbb\search\base $keywords[$i] = ' '; break; case '-': + // Ignore hyphen if followed by a space + if (isset($keywords[$i + 1]) && $keywords[$i + 1] == ' ') + { + $keywords[$i] = ' '; + } + else + { + $space = $keywords[$i]; + } + break; case '+': $space = $keywords[$i]; break; diff --git a/tests/functional/search/base.php b/tests/functional/search/base.php index 48c444fb76..99f6ea6526 100644 --- a/tests/functional/search/base.php +++ b/tests/functional/search/base.php @@ -68,6 +68,9 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case $this->assert_search_found('phpbb3+installation', 1, 3); $this->assert_search_found('foosubject+barsearch', 1, 2); $this->assert_search_not_found('loremipsumdedo'); + $this->assert_search_found('barsearch-testing', 1, 2); // test hyphen ignored + $this->assert_search_found('barsearch+-+testing', 1, 2); // test hyphen wrapped with space ignored + $this->assert_search_not_found('barsearch+-testing'); // test excluding keyword $this->login(); $this->admin_login();