*/
class SearchPostgres extends SearchEngine {
- function SearchPostgres( $db ) {
+ function __construct( $db ) {
$this->db = $db;
}
/*
* Transform the user's search string into a better form for tsearch2
+ * Returns an SQL fragment consisting of quoted text to search for.
*/
function parseQuery( $term ) {
- wfDebug( "parseQuery received: $term" );
+ wfDebug( "parseQuery received: $term \n" );
## No backslashes allowed
$term = preg_replace('/\\\/', '', $term);
## Quote the whole thing
$searchstring = $this->db->addQuotes($searchstring);
- wfDebug( "parseQuery returned: $searchstring" );
+ wfDebug( "parseQuery returned: $searchstring \n" );
return $searchstring;
}
$prefix = $wgDBversion < 8.3 ? "'default'," : '';
+ # Get the SQL fragment for the given term
$searchstring = $this->parseQuery( $term );
## We need a separate query here so gin does not complain about empty searches
if ( count($this->namespaces) < 1)
$query .= ' AND page_namespace = 0';
else {
- $namespaces = implode( ',', $this->namespaces );
+ $namespaces = $this->db->makeList( $this->namespaces );
$query .= " AND page_namespace IN ($namespaces)";
}
}
$query .= $this->db->limitResult( '', $this->limit, $this->offset );
- wfDebug( "searchQuery returned: $query" );
+ wfDebug( "searchQuery returned: $query \n" );
return $query;
}
function update( $pageid, $title, $text ) {
## We don't want to index older revisions
- $SQL = "UPDATE pagecontent SET textvector = NULL WHERE old_id = ".
- "(SELECT rev_text_id FROM revision WHERE rev_page = $pageid ".
- "ORDER BY rev_text_id DESC LIMIT 1 OFFSET 1)";
+ $SQL = "UPDATE pagecontent SET textvector = NULL WHERE old_id IN ".
+ "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) .
+ " ORDER BY rev_text_id DESC OFFSET 1)";
$this->db->doQuery($SQL);
return true;
}
* @ingroup Search
*/
class PostgresSearchResult extends SearchResult {
- function PostgresSearchResult( $row ) {
- $this->mTitle = Title::makeTitle( $row->page_namespace, $row->page_title );
+ function __construct( $row ) {
+ parent::__construct($row);
$this->score = $row->score;
}
function getScore() {
* @ingroup Search
*/
class PostgresSearchResultSet extends SearchResultSet {
- function PostgresSearchResultSet( $resultSet, $terms ) {
+ function __construct( $resultSet, $terms ) {
$this->mResultSet = $resultSet;
$this->mTerms = $terms;
}