From: Brion Vibber Date: Tue, 11 Sep 2007 18:49:27 +0000 (+0000) Subject: * (bug 4021) Fix for MySQL wildcard search X-Git-Tag: 1.31.0-rc.0~51412 X-Git-Url: http://git.cyclocoop.org/fichier?a=commitdiff_plain;h=c4237dd26c39eeb0b85df03418ba1528de57047b;p=lhc%2Fweb%2Fwiklou.git * (bug 4021) Fix for MySQL wildcard search * (bug 10699) Fix for MySQL phrase search --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index e6bf677e84..b56dda287c 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -47,6 +47,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * Fixed notice when accessing special page without read permission and whitelist is not defined * (bug 9252) Fix for tidy funkiness when using editintro mode +* (bug 4021) Fix for MySQL wildcard search +* (bug 10699) Fix for MySQL phrase search === API changes in 1.12 === diff --git a/includes/SearchMySQL4.php b/includes/SearchMySQL4.php index 6d2bbfef0b..2cd3a54fc3 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,9 +47,11 @@ 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; @@ -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(); + } }