/** * Triggered as soon as a record is updated * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { $objRecord = $arrArguments[0]; if (self::$BIT_UPDATE_INDEX_ON_END_OF_REQUEST) { class_module_search_request_endprocessinglistener::addIdToIndex($objRecord); } else { $objIndex = new class_module_search_indexwriter(); $objIndex->indexObject($objRecord); } return true; }
/** * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; if (self::$BIT_UPDATE_INDEX_ON_END_OF_REQUEST) { class_module_search_request_endprocessinglistener::addIdToDelete($strSystemid); return true; } else { $objIndex = new class_module_search_indexwriter(); return $objIndex->removeRecordFromIndex($strSystemid); } }
protected function tearDown() { //since the test cleared the index, we want a fresh index again :) $objSearchIndexWriter = new class_module_search_indexwriter(); $objSearchIndexWriter->indexRebuild(); foreach (self::$arrObjectIds as $intKey => $strId) { $objObject = class_objectfactory::getInstance()->getObject($strId); if ($objObject !== null) { $objObject->deleteObjectFromDatabase(); } unset(self::$arrObjectIds[$intKey]); } }
/** * Handles the processing of objects directly */ private function processDirectly() { $objIndex = new class_module_search_indexwriter(); //start by processing the records to be deleted foreach (self::$arrToDelete as $strOneId => $strObject) { $objIndex->removeRecordFromIndex($strOneId); } //add new records foreach (self::$arrToIndex as $strOneId => $objInstance) { if (!is_object($objIndex) && validateSystemid($objInstance)) { $objInstance = class_objectfactory::getInstance()->getObject($objInstance); } $objIndex->indexObject($objInstance); } }
/** * @see interface_admin_systemtast::executeTask() * @return string */ public function executeTask() { if (!class_module_system_module::getModuleByName("search")->rightEdit()) { return $this->getLang("commons_error_permissions"); } $objWorker = new class_module_search_indexwriter(); if (!class_carrier::getInstance()->getObjSession()->sessionIsset($this->STR_SESSION_KEY)) { //fetch all records to be indexed $strQuery = "SELECT system_id FROM " . _dbprefix_ . "system WHERE system_deleted = 0"; $arrRows = class_carrier::getInstance()->getObjDB()->getPArray($strQuery, array()); $arrIds = array(); foreach ($arrRows as $arrOneRow) { $arrIds[] = $arrOneRow["system_id"]; } $objWorker->clearIndex(); class_carrier::getInstance()->getObjSession()->setSession($this->STR_SESSION_KEY, $arrIds); $this->setParam("totalCount", count($arrIds)); } $arrIds = class_carrier::getInstance()->getObjSession()->getSession($this->STR_SESSION_KEY); if (count($arrIds) == 0) { class_carrier::getInstance()->getObjSession()->sessionUnset($this->STR_SESSION_KEY); return $this->objToolkit->getTextRow($this->getLang("worker_indexrebuild_end", array($objWorker->getNumberOfDocuments(), $objWorker->getNumberOfContentEntries()))); } $intMax = 0; foreach ($arrIds as $intKey => $strOneValue) { $objObject = class_objectfactory::getInstance()->getObject($strOneValue); if ($objObject != null) { $objWorker->indexObject($objObject); } unset($arrIds[$intKey]); if ($intMax++ > 500) { break; } } class_carrier::getInstance()->getObjSession()->setSession($this->STR_SESSION_KEY, $arrIds); //and create a small progress-info $intTotal = $this->getParam("totalCount"); $floatOnePercent = 100 / $intTotal; //and multiply it with the already processed records $intLookupsDone = ((int) $intTotal - count($arrIds)) * $floatOnePercent; $intLookupsDone = round($intLookupsDone, 2); if ($intLookupsDone < 0) { $intLookupsDone = 0; } $this->setStrProgressInformation($this->getLang("worker_indexrebuild", array($objWorker->getNumberOfDocuments(), $objWorker->getNumberOfContentEntries()))); $this->setStrReloadParam("&totalCount=" . $this->getParam("totalCount")); return $intLookupsDone; }
/** * @return bool */ public function execute() { $objIndex = new class_module_search_indexwriter(); //start with deletions $objQueue = new class_search_indexqueue(); foreach ($objQueue->getRows(class_search_enum_indexaction::DELETE()) as $arrRow) { $objIndex->removeRecordFromIndex($arrRow["search_queue_systemid"]); $objQueue->deleteBySystemid($arrRow["search_queue_systemid"]); } //index objects foreach ($objQueue->getRows(class_search_enum_indexaction::INDEX(), 0, $this->intMaxObjectsPerRun) as $arrRow) { $objIndex->indexObject(class_objectfactory::getInstance()->getObject($arrRow["search_queue_systemid"])); $objQueue->deleteBySystemidAndAction($arrRow["search_queue_systemid"], class_search_enum_indexaction::INDEX()); } //reschedule for the next run return false; }
private function updateIndex() { class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_DBQUERIES | class_carrier::INT_CACHE_TYPE_MODULES); class_module_search_indexwriter::resetIndexAvailableCheck(); $objWorker = new class_module_search_indexwriter(); $objWorker->indexRebuild(); }
public function testFullIndexWriter() { if (@ini_get("max_execution_time") < 300 && @ini_get("max_execution_time") > 0) { @ini_set("max_execution_time", 300); } $indexWriter = new class_module_search_indexwriter(); $intQueriesStart = class_db::getInstance()->getNumber(); $intTimeStart = microtime(true); $indexWriter->indexRebuild(); $intTimeEnd = microtime(true); $time = $intTimeEnd - $intTimeStart; echo "Index erstellt in " . sprintf('%f', $time) . " sec.\n"; echo "Index erstellt mit " . (class_db::getInstance()->getNumber() - $intQueriesStart) . " queries.\n"; }
/** * Resets the internal check whether the search module is available with index support or not. * @return void */ public static function resetIndexAvailableCheck() { self::$isIndexAvailable = null; }