|
|
<?php
/*******************************************************************************
Location: <b>search/SearchEngine.class</b><br>
<br>
SearchEngine.<br>
Copyright © 2001 eXtremePHP. All rights reserved.<br>
<br>
@author Remi Michalski, Ken Egervari<br>
*******************************************************************************/
class SearchEngine {
/****************************************************************************
Initializes the connection to the database.
****************************************************************************/
function SearchEngine( &$searchStrategy ) {
global $dbConnection;
$this->dbConnection = &$dbConnection;
$this->searchStrategy = &$searchStrategy;
}
/****************************************************************************
Sets the search string that a search will be performed on.
* @param $searchText string. A search string
* @returns void
****************************************************************************/
function searchOn( $searchText ) {
$this->searchStrategy->searchOn( $searchText );
}
/****************************************************************************
Performs a search on the parsed search string for each registered module.
* @returns ResultSet
****************************************************************************/
function search() {
$modResult = array();
$searchResult = $this->searchStrategy->search();
foreach( $searchResult as $result ) {
$module = $this->getModuleById( $result->sectionname );
if( $module )
$modResult[] = $module->constructResult( $result->did );
}
return $modResult;
}
/****************************************************************************
Registers the search module with the SearchEngine for use during
searches.
* @param $module SearchModule. A SearchModule object
* @returns void
****************************************************************************/
function addModule( $module ) {
$this->searchModule[ $module->moduleName ] = $module;
$this->searchModule[ $module->moduleName ]->setDatabaseConnection(
$this->dbConnection );
}
/****************************************************************************
Returns a module ID given a module name.
* @param $searchText string. A search string
* @returns void
****************************************************************************/
function getModuleById( $moduleName ) {
if( isset( $this->searchModule[$moduleName] ) )
return $this->searchModule[$moduleName];
return false;
}
/*----- PRIVATE -----------------------------------------------------------*/
var $dbConnection;
var $searchStrategy;
var $searchModule = array();
}
/*
echo '<html><head></head><body>' . "\n";
require_once( $DOCUMENT_ROOT . '/lib/common/common.inc.php' );
require_once( $DOCUMENT_ROOT .
'/lib/application/search/SearchRealtyNowEModule.class.php' );
require_once( $DOCUMENT_ROOT .
'/lib/application/search/PosNegSearch.class.php' );
$psn = new PosNegSearch( $dbConnection );
$emod = new SearchRealtyNowEModule();
$se = new SearchEngine( $dbConnection, $psn );
$se->searchOn( "features work faster" );
$se->addModule( $emod );
$searchResult = $se->search();
echo '<pre>' . "\n";
var_dump( $se );
var_dump( $searchResult );
foreach( $searchResult as $sr ) {
$link = $sr->getLink();
$desc = $sr->getDescription();
$sdesc = $sr->getShortDescription();
echo "\n$link\n$desc\n$sdesc\n";
}
echo '</pre>' . "\n";
echo '</body></html>';
*/
?>
|