diff options
Diffstat (limited to 'includes/SearchMySQL4.php')
-rw-r--r-- | includes/SearchMySQL4.php | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/includes/SearchMySQL4.php b/includes/SearchMySQL4.php index 6d2bbfef..271dbe1d 100644 --- a/includes/SearchMySQL4.php +++ b/includes/SearchMySQL4.php @@ -32,7 +32,7 @@ class SearchMySQL4 extends SearchMySQL { /** @todo document */ function parseQuery( $filteredText, $fulltext ) { global $wgContLang; - $lc = SearchEngine::legalSearchChars(); + $lc = SearchEngine::legalSearchChars(); // Minus format chars $searchon = ''; $this->searchTerms = array(); @@ -47,12 +47,14 @@ class SearchMySQL4 extends SearchMySQL { } $searchon .= $terms[1] . $wgContLang->stripForSearch( $terms[2] ); if( !empty( $terms[3] ) ) { + // Match individual terms in result highlighting... $regexp = preg_quote( $terms[3], '/' ); if( $terms[4] ) $regexp .= "[0-9A-Za-z_]+"; } else { + // Match the quoted term in result highlighting... $regexp = preg_quote( str_replace( '"', '', $terms[2] ), '/' ); } - $this->searchTerms[] = $regexp; + $this->searchTerms[] = "\b$regexp\b"; } wfDebug( "Would search with '$searchon'\n" ); wfDebug( 'Match with /\b' . implode( '\b|\b', $this->searchTerms ) . "\b/\n" ); @@ -64,5 +66,9 @@ class SearchMySQL4 extends SearchMySQL { $field = $this->getIndexField( $fulltext ); return " MATCH($field) AGAINST('$searchon' IN BOOLEAN MODE) "; } + + public static function legalSearchChars() { + return "\"*" . parent::legalSearchChars(); + } } |