More cleanups of tsearch2 parse query
authorGreg Sabino Mullane <greg@users.mediawiki.org>
Thu, 5 Apr 2007 13:51:16 +0000 (13:51 +0000)
committerGreg Sabino Mullane <greg@users.mediawiki.org>
Thu, 5 Apr 2007 13:51:16 +0000 (13:51 +0000)
includes/SearchPostgres.php

index 3562b3c..daebfa7 100644 (file)
@@ -61,6 +61,9 @@ class SearchPostgres extends SearchEngine {
                $term = preg_replace('/\s*\(\s*/', ' (', $term);
                $term = preg_replace('/\s*\)\s*/', ') ', $term);
 
+               ## Treat colons as word separators:
+               $term = preg_replace('/:/', ' ', $term);
+
                $this->searchTerms = array();
                $m = array();
                $searchstring = '';
@@ -92,6 +95,12 @@ class SearchPostgres extends SearchEngine {
                ## Remove any doubled-up operators
                $searchstring = preg_replace('/([\!\&\|]) +(?:[\&\|] +)+/', "$1 ", $searchstring);
 
+               ## Remove any non-spaced operators (e.g. "Zounds!")
+               $searchstring = preg_replace('/([^ ])[\!\&\|]/', "$1", $searchstring);
+
+               ## Remove any trailing operators
+               $searchstring = preg_replace('/(?: [\!\&\|])*$/', '', $searchstring);
+
                ## Quote the whole thing
                $searchstring = $this->db->addQuotes($searchstring);