download SearchEngine.class.php
Language: PHP
LOC: 35
Project Info
eXtremePHP
Server: Spider_20090107_inc
Type: filesystem
...\inc_004\extremephp\search\
   ...mentCatalogue.class.php
   DocumentParser.class.php
   PosNegSearch.class.php
   search.sql
   SearchEngine.class.php
   SearchModule.class.php
   SearchResult.class.php
   ...hResultLayout.class.php
   SearchStrategy.class.php
   SearchThing.class.php

<?php

/*******************************************************************************
	Location: <b>search/SearchEngine.class</b><br>
 	<br>
	SearchEngine.<br>
	Copyright &copy; 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>';
*/
?>

About Koders | Resources | Downloads | Support | Black Duck | Submit Project | Terms of Service | DMCA | Privacy Policy | Site Map| Contact Us