Severely refactored the SearchResultSet descendants system, consolidating most od...
authorMax Semenik <maxsem@users.mediawiki.org>
Sat, 9 Jan 2010 14:30:55 +0000 (14:30 +0000)
committerMax Semenik <maxsem@users.mediawiki.org>
Sat, 9 Jan 2010 14:30:55 +0000 (14:30 +0000)
includes/AutoLoader.php
includes/search/SearchEngine.php
includes/search/SearchIBM_DB2.php
includes/search/SearchMySQL.php
includes/search/SearchOracle.php
includes/search/SearchPostgres.php
includes/search/SearchSqlite.php

index 547ad7d..c282a78 100644 (file)
@@ -466,9 +466,7 @@ $wgAutoloadLocalClasses = array(
        'MWTidy' => 'includes/parser/Tidy.php',
 
        # includes/search
-       'IBM_DB2SearchResultSet' => 'includes/search/SearchIBM_DB2.php',
        'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
-       'OracleSearchResultSet' => 'includes/search/SearchOracle.php',
        'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
        'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
        'SearchEngineDummy' => 'includes/search/SearchEngine.php',
@@ -486,6 +484,7 @@ $wgAutoloadLocalClasses = array(
        'SearchUpdate' => 'includes/search/SearchUpdate.php',
        'SearchUpdateMyISAM' => 'includes/search/SearchUpdate.php',
        'SqliteSearchResultSet' => 'includes/search/SearchSqlite.php',
+       'SqlSearchResultSet' => 'includes/search/SearchEngine.php',
 
        # includes/specials
        'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php',
index 952e9b2..44e7733 100644 (file)
@@ -512,6 +512,37 @@ class SearchResultSet {
        }
 }
 
+/**
+ * This class is used for different SQL-based search engines shipped with MediaWiki
+ */
+class SqlSearchResultSet extends SearchResultSet {
+       function __construct( $resultSet, $terms ) {
+               $this->mResultSet = $resultSet;
+               $this->mTerms = $terms;
+       }
+
+       function termMatches() {
+               return $this->mTerms;
+       }
+
+       function numRows() {
+               return $this->mResultSet->numRows();
+       }
+
+       function next() {
+               if ($this->mResultSet === false )
+                       return false;
+
+               $row = $this->mResultSet->fetchObject();
+               if ($row === false)
+                       return false;
+               return new SearchResult($row);
+       }
+
+       function free() {
+               $this->mResultSet->free();
+       }
+}
 
 /**
  * @ingroup Search
index b94a478..7f8dfec 100644 (file)
@@ -35,22 +35,22 @@ class SearchIBM_DB2 extends SearchEngine {
         * Perform a full text search query and return a result set.
         *
         * @param $term String: raw search term
-        * @return IBM_DB2SearchResultSet
+        * @return SqlSearchResultSet
         */
        function searchText( $term ) {
                $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true)));
-               return new IBM_DB2SearchResultSet($resultSet, $this->searchTerms);
+               return new SqlSearchResultSet($resultSet, $this->searchTerms);
        }
 
        /**
         * Perform a title-only search query and return a result set.
         *
         * @param $term String: taw search term
-        * @return IBM_DB2SearchResultSet
+        * @return SqlSearchResultSet
         */
        function searchTitle($term) {
                $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false)));
-               return new MySQLSearchResultSet($resultSet, $this->searchTerms);
+               return new SqlSearchResultSet($resultSet, $this->searchTerms);
        }
 
 
@@ -222,28 +222,3 @@ class SearchIBM_DB2 extends SearchEngine {
                        array());
        }
 }
-
-/**
- * @ingroup Search
- */
-class IBM_DB2SearchResultSet extends SearchResultSet {
-       function __construct($resultSet, $terms) {
-               $this->mResultSet = $resultSet;
-               $this->mTerms = $terms;
-       }
-
-       function termMatches() {
-               return $this->mTerms;
-       }
-
-       function numRows() {
-               return $this->mResultSet->numRows();
-       }
-
-       function next() {
-               $row = $this->mResultSet->fetchObject();
-               if ($row === false)
-                       return false;
-               return new SearchResult($row);
-       }
-}
index a0ec927..5eaf972 100644 (file)
@@ -318,35 +318,12 @@ class SearchMySQL extends SearchEngine {
 /**
  * @ingroup Search
  */
-class MySQLSearchResultSet extends SearchResultSet {
+class MySQLSearchResultSet extends SqlSearchResultSet {
        function MySQLSearchResultSet( $resultSet, $terms, $totalHits=null ) {
-               $this->mResultSet = $resultSet;
-               $this->mTerms = $terms;
+               parent::__construct( $resultSet, $terms );
                $this->mTotalHits = $totalHits;
        }
 
-       function termMatches() {
-               return $this->mTerms;
-       }
-
-       function numRows() {
-               return $this->mResultSet->numRows();
-       }
-
-       function next() {
-               $row = $this->mResultSet->fetchObject();
-               if( $row === false ) {
-                       return false;
-               } else {
-                       return new SearchResult( $row );
-               }
-       }
-
-       function free() {
-               $this->mResultSet->free();
-       }
-
-       
        function getTotalHits() {
                return $this->mTotalHits;
        }
index a7b6dbf..0c6cf37 100644 (file)
@@ -63,25 +63,25 @@ class SearchOracle extends SearchEngine {
         * Perform a full text search query and return a result set.
         *
         * @param $term String: raw search term
-        * @return OracleSearchResultSet
+        * @return SqlSearchResultSet
         */
        function searchText( $term ) {
                if ($term == '')
-                       return new OracleSearchResultSet(false, '');
+                       return new SqlSearchResultSet(false, '');
 
                $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true)));
-               return new OracleSearchResultSet($resultSet, $this->searchTerms);
+               return new SqlSearchResultSet($resultSet, $this->searchTerms);
        }
 
        /**
         * Perform a title-only search query and return a result set.
         *
         * @param $term String: raw search term
-        * @return ORacleSearchResultSet
+        * @return SqlSearchResultSet
         */
        function searchTitle($term) {
                if ($term == '')
-                       return new OracleSearchResultSet(false, '');
+                       return new SqlSearchResultSet(false, '');
 
                $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false)));
                return new MySQLSearchResultSet($resultSet, $this->searchTerms);
@@ -267,35 +267,3 @@ class SearchOracle extends SearchEngine {
                return "\"" . parent::legalSearchChars();
        }
 }
-
-/**
- * @ingroup Search
- */
-class OracleSearchResultSet extends SearchResultSet {
-
-       function __construct($resultSet, $terms) {
-               $this->mResultSet = $resultSet;
-               $this->mTerms = $terms;
-       }
-
-       function termMatches() {
-               return $this->mTerms;
-       }
-
-       function numRows() {
-               if ($this->mResultSet === false )
-                       return 0;
-               else
-                       return $this->mResultSet->numRows();
-       }
-
-       function next() {
-               if ($this->mResultSet === false )
-                       return false;
-
-               $row = $this->mResultSet->fetchObject();
-               if ($row === false)
-                       return false;
-               return new SearchResult($row);
-       }
-}
index 81e9e65..0006fa8 100644 (file)
@@ -230,18 +230,9 @@ class PostgresSearchResult extends SearchResult {
 /**
  * @ingroup Search
  */
-class PostgresSearchResultSet extends SearchResultSet {
+class PostgresSearchResultSet extends SqlSearchResultSet {
        function __construct( $resultSet, $terms ) {
-               $this->mResultSet = $resultSet;
-               $this->mTerms = $terms;
-       }
-
-       function termMatches() {
-               return $this->mTerms;
-       }
-
-       function numRows() {
-               return $this->mResultSet->numRows();
+               parent::__construct( $resultSet, $terms );
        }
 
        function next() {
index a3e83d9..404b4a4 100644 (file)
@@ -350,35 +350,12 @@ class SearchSqlite extends SearchEngine {
 /**
  * @ingroup Search
  */
-class SqliteSearchResultSet extends SearchResultSet {
+class SqliteSearchResultSet extends SqlSearchResultSet {
        function SqliteSearchResultSet( $resultSet, $terms, $totalHits=null ) {
-               $this->mResultSet = $resultSet;
-               $this->mTerms = $terms;
+               parent::__construct( $resultSet, $terms );
                $this->mTotalHits = $totalHits;
        }
 
-       function termMatches() {
-               return $this->mTerms;
-       }
-
-       function numRows() {
-               return $this->mResultSet->numRows();
-       }
-
-       function next() {
-               $row = $this->mResultSet->fetchObject();
-               if( $row === false ) {
-                       return false;
-               } else {
-                       return new SearchResult( $row );
-               }
-       }
-
-       function free() {
-               $this->mResultSet->free();
-       }
-
-       
        function getTotalHits() {
                return $this->mTotalHits;
        }