/**
* @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 );
* Perform a full text search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
protected function doSearchTextInDB( $term ) {
if ( $term == '' ) {
- return new SqlSearchResultSet( false, '' );
+ return null;
}
$dbr = $this->lb->getConnectionRef( DB_REPLICA );
* Perform a title-only search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
protected function doSearchTitleInDB( $term ) {
if ( $term == '' ) {
- return new SqlSearchResultSet( false, '' );
+ return null;
}
$dbr = $this->lb->getConnectionRef( DB_REPLICA );
* @param string $text
*/
function update( $id, $title, $text ) {
- $dbw = $this->lb->getConnection( DB_MASTER );
+ $dbw = $this->lb->getMaintenanceConnectionRef( DB_MASTER );
$dbw->replace( 'searchindex',
[ 'si_page' ],
[
* Whether fulltext search is supported by current schema
* @return bool
*/
- function fulltextSearchSupported() {
+ private function fulltextSearchSupported() {
+ // Avoid getConnectionRef() in order to get DatabaseSqlite specifically
/** @var DatabaseSqlite $dbr */
$dbr = $this->lb->getConnection( DB_REPLICA );
-
- return $dbr->checkForEnabledSearch();
+ try {
+ return $dbr->checkForEnabledSearch();
+ } finally {
+ $this->lb->reuseConnection( $dbr );
+ }
}
/**
* Perform a full text search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
protected function doSearchTextInDB( $term ) {
return $this->searchInternal( $term, true );
* Perform a title-only search query and return a result set.
*
* @param string $term Raw search term
- * @return SqlSearchResultSet
+ * @return SqlSearchResultSet|null
*/
protected function doSearchTitleInDB( $term ) {
return $this->searchInternal( $term, false );
* @param string $title
* @param string $text
*/
- function update( $id, $title, $text ) {
+ public function update( $id, $title, $text ) {
if ( !$this->fulltextSearchSupported() ) {
return;
}
* @param int $id
* @param string $title
*/
- function updateTitle( $id, $title ) {
+ public function updateTitle( $id, $title ) {
if ( !$this->fulltextSearchSupported() ) {
return;
}