*/
class SearchPostgres extends SearchEngine {
- function SearchPostgres( $db ) {
+ function __construct( $db ) {
$this->db = $db;
}
* Currently searches a page's current title (page.page_title) and
* latest revision article text (pagecontent.old_text)
*
- * @param string $term - Raw search term
+ * @param $term String: raw search term
* @return PostgresSearchResultSet
- * @access public
*/
function searchTitle( $term ) {
$q = $this->searchQuery( $term , 'titlevector', 'page_title' );
/*
* 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;
/**
* Construct the full SQL query to do the search.
- * @param string $filteredTerm
- * @param string $fulltext
- * @private
+ * @param $filteredTerm String
+ * @param $fulltext String
*/
function searchQuery( $term, $fulltext, $colname ) {
global $wgDBversion;
}
$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 ) {
- parent::SearchResult($row);
+ 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;
}