From 5d346c0d171c2322954fb7c330cabf09684c1bf6 Mon Sep 17 00:00:00 2001 From: River Tarnell Date: Sun, 11 Mar 2007 04:53:58 +0000 Subject: [PATCH] cleanup --- includes/SearchOracle.php | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/includes/SearchOracle.php b/includes/SearchOracle.php index de3ed554a1..92baa464dc 100644 --- a/includes/SearchOracle.php +++ b/includes/SearchOracle.php @@ -23,8 +23,6 @@ */ class SearchOracle extends SearchEngine { - var $strictMatching = false; - function __construct($db) { $this->db = $db; } @@ -96,7 +94,7 @@ class SearchOracle extends SearchEngine { * @private */ function queryRanking($filteredTerm, $fulltext) { - return ''; + return ' ORDER BY score(1)'; } /** @@ -141,38 +139,33 @@ class SearchOracle extends SearchEngine { } /** @todo document */ - function parseQuery( $filteredText, $fulltext ) { + function parseQuery($filteredText, $fulltext) { global $wgContLang; $lc = SearchEngine::legalSearchChars(); - $searchon = ''; $this->searchTerms = array(); # FIXME: This doesn't handle parenthetical expressions. $m = array(); - if( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/', - $filteredText, $m, PREG_SET_ORDER ) ) { - foreach( $m as $terms ) { - if( $searchon !== '' ) $searchon .= ' '; - if( $this->strictMatching && ($terms[1] == '') ) { - $terms[1] = '+'; - } - $searchon .= $terms[1] . $wgContLang->stripForSearch( $terms[2] ); - if( !empty( $terms[3] ) ) { + $q = array(); + + if (preg_match_all('/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/', + $filteredText, $m, PREG_SET_ORDER)) { + foreach($m as $terms) { + $q[] = $terms[1] . $wgContLang->stripForSearch($terms[2]); + + if (!empty($terms[3])) { $regexp = preg_quote( $terms[3], '/' ); - if( $terms[4] ) $regexp .= "[0-9A-Za-z_]+"; + if ($terms[4]) + $regexp .= "[0-9A-Za-z_]+"; } else { - $regexp = preg_quote( str_replace( '"', '', $terms[2] ), '/' ); + $regexp = preg_quote(str_replace('"', '', $terms[2]), '/'); } $this->searchTerms[] = $regexp; } - wfDebug( "Would search with '$searchon'\n" ); - wfDebug( 'Match with /\b' . implode( '\b|\b', $this->searchTerms ) . "\b/\n" ); - } else { - wfDebug( "Can't understand search query '{$filteredText}'\n" ); } - $searchon = $this->db->strencode($searchon); - $field = $this->getIndexField( $fulltext ); + $searchon = $this->db->strencode(join(',', $q)); + $field = $this->getIndexField($fulltext); return " CONTAINS($field, '$searchon', 1) > 0 "; } -- 2.20.1