public function init() { parent::init(); if (file_exists(PIMCORE_WEBSITE_PATH . "/var/search/search.xml")) { $searchConf = new Zend_Config_Xml(PIMCORE_WEBSITE_PATH . "/var/search/search.xml"); if ($searchConf->search->frontend->enabled) { try { Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive()); $this->frontendIndex = Zend_Search_Lucene::open(SearchPhp_Plugin::getFrontendSearchIndex()); $this->categories = explode(",", $searchConf->search->frontend->categories); if ($searchConf->search->frontend->ignoreLanguage != '1') { $this->searchLanguage = $this->_getParam("language"); if (empty($this->searchLanguage)) { try { $this->searchLanguage = Zend_Registry::get("Zend_Locale"); } catch (Exception $e) { $this->searchLanguage = "en"; } } } else { $this->searchLanguage = null; } $this->fuzzySearch = false; if ($searchConf->search->frontend->fuzzySearch == '1') { $this->fuzzySearch = true; } if ($searchConf->search->frontend->ownHostOnly) { $this->ownHostOnly = true; } } catch (Exception $e) { //p_r($e); throw new Exception("could not open index"); } } else { throw new Exception("search frontend is not installed and enabled."); } } }
protected function checkAndPrepareIndex() { if (!$this->index) { $indexDir = SearchPhp_Plugin::getFrontendSearchIndex(); //switch to tmpIndex $indexDir = str_replace("/index", "/tmpindex", $indexDir); try { Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive()); $this->index = Zend_Search_Lucene::open($indexDir); } catch (Exception $e) { logger::log(get_class($this) . ": could not open frontend index, creating new one.", Zend_Log::WARN); Zend_Search_Lucene::create($indexDir); $this->index = Zend_Search_Lucene::open($indexDir); } } }
ini_set("max_execution_time", "-1"); logger::log("SearchPhp_Plugin: Starting crawl", Zend_Log::DEBUG); //TODO nix specific exec("rm -Rf " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir); $confArray = SearchPhp_Plugin::getSearchConfigArray(); $urls = explode(",", $confArray['search']['frontend']['urls']); $validLinkRegexes = explode(",", $confArray['search']['frontend']['validLinkRegexes']); $invalidLinkRegexes = explode(",", $confArray['search']['frontend']['invalidLinkRegexes']); $rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile); $rawConfigArray = $rawConfig->toArray(); $rawConfigArray['search']['frontend']['crawler']['running'] = 1; $rawConfigArray['search']['frontend']['crawler']['started'] = time(); $config = new Zend_Config($rawConfigArray, true); $writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile)); $writer->write(); $crawler = new SearchPhp_Frontend_Crawler($validLinkRegexes, $invalidLinkRegexes, 10, 30, $confArray['search']['frontend']['crawler']['contentStartIndicator'], $confArray['search']['frontend']['crawler']['contentEndIndicator']); $crawler->findLinks($urls); $rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile); $rawConfigArray = $rawConfig->toArray(); $rawConfigArray['search']['frontend']['crawler']['running'] = 0; $rawConfigArray['search']['frontend']['crawler']['finished'] = time(); $config = new Zend_Config($rawConfigArray, true); $writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile)); $writer->write(); logger::log("SearchPhp_Plugin: replacing old index ...", Zend_Log::DEBUG); $indexDir = SearchPhp_Plugin::getFrontendSearchIndex(); //TODO nix specific exec("rm -Rf " . $indexDir); exec("mv " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir); logger::log("Search_PluginPhp: replaced old index", Zend_Log::DEBUG); logger::log("Search_PluginPhp: Finished crawl", Zend_Log::DEBUG);