3 require_once 'MTrack/Interface/SearchEngine.php';
4 require_once 'MTrack/SearchResult.php';
7 require_once 'MTrack/search/lucene.php';
8 require_once 'MTrack/search/solr.php';
13 class MTrackSearchDB {
15 static $engine = null;
17 static function getEngine() {
18 if (self::$engine === null) {
19 $name = MTrackConfig::get('core', 'search_engine');
20 if (!$name) $name = 'MTrackSearchEngineLucene';
21 self::$engine = new $name;
26 /* functions that can perform indexing */
27 static $funcs = array();
29 static function register_indexer($id, $func)
31 self::$funcs[$id] = $func;
34 static function index_object($id)
37 while (strlen($key)) {
38 if (isset(self::$funcs[$key])) {
41 $new_key = preg_replace('/:[^:]+$/', '', $key);
42 if ($key == $new_key) {
48 if (isset(self::$funcs[$key])) {
49 $func = self::$funcs[$key];
50 return call_user_func($func, $id);
55 static function get() {
56 return self::getEngine()->getIdx();
59 static function setBatchMode() {
60 self::getEngine()->setBatchMode();
63 static function commit($optimize = false) {
64 self::getEngine()->commit($optimize);
67 static function add($object, $fields, $replace = false) {
68 self::getEngine()->add($object, $fields, $replace);
71 static function search($query) {
72 return self::getEngine()->search($query);