Bringing Sphinx search support up to code: broken out to a plugin, now supports multiple sites on a single server.
Upgrade notes: * Index names have changed from hardcoded 'Identica_people' and 'Identica_notices' to use the database name and actual table names. Must reindex. New events: * GetSearchEngine to override default search engine class selection from plugins New scripts: * gen_config.php generates a sphinx.conf from database configuration (with theoretical support for status_network table, but it doesn't seem to be cleanly queriable right now without knowing the db setup info for that. Needs generalized support.) * Replaced old sphinx-indexer.sh and sphinx-cron.sh with index_update.php Other fixes: * sphinx.conf.sample better matches our live config, skipping unused stopword list and using a more realistic indexer memory limit Further notes: * Probably doesn't work right with PostgreSQL yet; Sphinx can pull from PG but the extraction queries currently look like they use some MySQL-specific functions.
This commit is contained in:
@@ -184,27 +184,20 @@ class Memcached_DataObject extends DB_DataObject
|
||||
require_once INSTALLDIR.'/lib/search_engines.php';
|
||||
static $search_engine;
|
||||
if (!isset($search_engine)) {
|
||||
$connected = false;
|
||||
if (common_config('sphinx', 'enabled')) {
|
||||
$search_engine = new SphinxSearch($this, $table);
|
||||
$connected = $search_engine->is_connected();
|
||||
}
|
||||
|
||||
// unable to connect to sphinx' search daemon
|
||||
if (!$connected) {
|
||||
if ('mysql' === common_config('db', 'type')) {
|
||||
$type = common_config('search', 'type');
|
||||
if ($type == 'like') {
|
||||
$search_engine = new MySQLLikeSearch($this, $table);
|
||||
} else if ($type == 'fulltext') {
|
||||
$search_engine = new MySQLSearch($this, $table);
|
||||
} else {
|
||||
throw new ServerException('Unknown search type: ' . $type);
|
||||
}
|
||||
if (Event::handle('GetSearchEngine', array($this, $table, &$search_engine))) {
|
||||
if ('mysql' === common_config('db', 'type')) {
|
||||
$type = common_config('search', 'type');
|
||||
if ($type == 'like') {
|
||||
$search_engine = new MySQLLikeSearch($this, $table);
|
||||
} else if ($type == 'fulltext') {
|
||||
$search_engine = new MySQLSearch($this, $table);
|
||||
} else {
|
||||
$search_engine = new PGSearch($this, $table);
|
||||
throw new ServerException('Unknown search type: ' . $type);
|
||||
}
|
||||
} else {
|
||||
$search_engine = new PGSearch($this, $table);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $search_engine;
|
||||
}
|
||||
|
Reference in New Issue
Block a user