aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2014-03-11 09:48:24 +0100
committerJoas Schilling <nickvergessen@gmx.de>2014-03-11 09:48:24 +0100
commit4b259e3c825bb905b67492c870906022fae460e6 (patch)
tree69e2046c923b6023ef6f785538ffe2226de1404d
parent37b19bc5334a85c844afb78119f3fddbb81207aa (diff)
parentbaed78bde7ec12be380c01518bc7c0f030a3ae61 (diff)
downloadforums-4b259e3c825bb905b67492c870906022fae460e6.tar
forums-4b259e3c825bb905b67492c870906022fae460e6.tar.gz
forums-4b259e3c825bb905b67492c870906022fae460e6.tar.bz2
forums-4b259e3c825bb905b67492c870906022fae460e6.tar.xz
forums-4b259e3c825bb905b67492c870906022fae460e6.zip
Merge remote-tracking branch 'dhruvgoel92/ticket/11288-develop' into develop
* dhruvgoel92/ticket/11288-develop: [ticket/11288] Add unit test cases for foo-bar like queries [ticket/11288] Handle +,- without preceeding whitespace characters
-rw-r--r--phpBB/phpbb/search/fulltext_native.php6
-rw-r--r--tests/search/native_test.php49
2 files changed, 55 insertions, 0 deletions
diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php
index fb3726c957..60180f1728 100644
--- a/phpBB/phpbb/search/fulltext_native.php
+++ b/phpBB/phpbb/search/fulltext_native.php
@@ -326,6 +326,12 @@ class fulltext_native extends \phpbb\search\base
$this->db->sql_freeresult($result);
}
+ // Handle +, - without preceeding whitespace character
+ $match = array('#(\S)\+#', '#(\S)-#');
+ $replace = array('$1 +', '$1 +');
+
+ $keywords = preg_replace($match, $replace, $keywords);
+
// now analyse the search query, first split it using the spaces
$query = explode(' ', $keywords);
diff --git a/tests/search/native_test.php b/tests/search/native_test.php
index 4911160cc0..e860a4f89a 100644
--- a/tests/search/native_test.php
+++ b/tests/search/native_test.php
@@ -119,6 +119,55 @@ class phpbb_search_native_test extends phpbb_search_test_case
array(1, 2),
array(),
),
+ array(
+ 'foo -foo',
+ 'all',
+ true,
+ array(1),
+ array(1),
+ array(),
+ ),
+ array(
+ '-foo foo',
+ 'all',
+ true,
+ array(1),
+ array(1),
+ array(),
+ ),
+ // some creative edge cases
+ array(
+ 'foo foo-',
+ 'all',
+ true,
+ array(1),
+ array(),
+ array(),
+ ),
+ array(
+ 'foo- foo',
+ 'all',
+ true,
+ array(1),
+ array(),
+ array(),
+ ),
+ array(
+ 'foo-bar',
+ 'all',
+ true,
+ array(1, 2),
+ array(),
+ array(),
+ ),
+ array(
+ 'foo-bar-foo',
+ 'all',
+ true,
+ array(1, 2),
+ array(),
+ array(),
+ ),
// all common
array(
'commonword',