* latest revision article text (pagecontent.old_text)
*
* @param string $term Raw search term
- * @return PostgresSearchResultSet
+ * @return SqlSearchResultSet
*/
function searchTitle( $term ) {
$q = $this->searchQuery( $term, 'titlevector', 'page_title' );
$olderror = error_reporting( E_ERROR );
- $resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
+ $resultSet = $this->db->query( $q, 'SearchPostgres', true );
error_reporting( $olderror );
- if ( !$resultSet ) {
- // Needed for "Query requires full scan, GIN doesn't support it"
- return new SearchResultTooMany();
- }
- return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+ return new SqlSearchResultSet( $resultSet, $this->searchTerms );
}
function searchText( $term ) {
$q = $this->searchQuery( $term, 'textvector', 'old_text' );
$olderror = error_reporting( E_ERROR );
- $resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
+ $resultSet = $this->db->query( $q, 'SearchPostgres', true );
error_reporting( $olderror );
- if ( !$resultSet ) {
- return new SearchResultTooMany();
- }
- return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+ return new SqlSearchResultSet( $resultSet, $this->searchTerms );
}
/**
if ( strtolower( $terms[2] ) === 'and' ) {
$searchstring .= ' & ';
}
- elseif ( strtolower( $terms[2] ) === 'or' or $terms[2] === '|' ) {
+ elseif ( strtolower( $terms[2] ) === 'or' || $terms[2] === '|' ) {
$searchstring .= ' | ';
}
elseif ( strtolower( $terms[2] ) === 'not' ) {
$top = $res->fetchRow();
$top = $top[0];
+ $this->searchTerms = array();
if ( $top === "" ) { ## e.g. if only stopwords are used XXX return something better
$query = "SELECT page_id, page_namespace, page_title, 0 AS score " .
"FROM page p, revision r, pagecontent c WHERE p.page_latest = r.rev_id " .
function update( $pageid, $title, $text ) {
## We don't want to index older revisions
$sql = "UPDATE pagecontent SET textvector = NULL WHERE textvector IS NOT NULL and old_id IN " .
- "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) .
+ "(SELECT DISTINCT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) .
" ORDER BY rev_text_id DESC OFFSET 1)";
$this->db->query( $sql );
return true;
return true;
}
-} ## end of the SearchPostgres class
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResult extends SearchResult {
- function __construct( $row ) {
- parent::__construct( $row );
- $this->score = $row->score;
- }
-
- function getScore() {
- return $this->score;
- }
-}
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResultSet extends SqlSearchResultSet {
- function next() {
- $row = $this->resultSet->fetchObject();
- if ( $row === false ) {
- return false;
- } else {
- return new PostgresSearchResult( $row );
- }
- }
}