*/
use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\ILoadBalancer;
/**
* Base search engine base class for database-backed searches
* @since 1.23
*/
abstract class SearchDatabase extends SearchEngine {
+ /** @var ILoadBalancer */
+ protected $lb;
+ /** @var IDatabase (backwards compatibility) */
+ protected $db;
+
/**
- * @var IDatabase Replica database from which to read results
+ * @var string[] search terms
*/
- protected $db;
+ protected $searchTerms = [];
/**
- * @param IDatabase|null $db The database to search from
+ * @param ILoadBalancer $lb The load balancer for the DB cluster to search on
*/
- public function __construct( IDatabase $db = null ) {
- $this->db = $db ?: wfGetDB( DB_REPLICA );
+ public function __construct( ILoadBalancer $lb ) {
+ $this->lb = $lb;
+ // @TODO: remove this deprecated field in 1.35
+ $this->db = $lb->getLazyConnectionRef( DB_REPLICA ); // b/c
}
/**
* @param string $term
- * @return SearchResultSet|Status|null
+ * @return ISearchResultSet|Status|null
*/
final public function doSearchText( $term ) {
return $this->doSearchTextInDB( $this->extractNamespacePrefix( $term ) );
* Perform a full text search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
abstract protected function doSearchTextInDB( $term );
/**
* @param string $term
- * @return SearchResultSet|null
+ * @return ISearchResultSet|null
*/
final public function doSearchTitle( $term ) {
return $this->doSearchTitleInDB( $this->extractNamespacePrefix( $term ) );
* Perform a title-only search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
abstract protected function doSearchTitleInDB( $term );