public function setUp() { parent::setUp(); eZINI::instance('ezfind.ini')->loadCache(true); eZINI::instance('solr.ini')->loadCache(true); ezpINIHelper::setINISetting('site.ini', 'SearchSettings', 'AllowEmptySearch', 'enabled'); ezpINIHelper::setINISetting('site.ini', 'RegionalSettings', 'SiteLanguageList', array('eng-GB')); $this->solrSearch = new eZSolr(); $this->testObj = eZContentObject::fetchByNodeID(2); $this->solrSearch->addObject($this->testObj); $this->fetchParams = array('SearchOffset' => 0, 'SearchLimit' => 10, 'Facet' => null, 'SortBy' => null, 'Filter' => null, 'SearchContentClassID' => null, 'SearchSectionID' => null, 'SearchSubTreeArray' => null, 'AsObjects' => null, 'SpellCheck' => null, 'IgnoreVisibility' => null, 'Limitation' => null, 'BoostFunctions' => null, 'QueryHandler' => 'ezpublish', 'EnableElevation' => null, 'ForceElevation' => null, 'SearchDate' => null, 'DistributedSearch' => null, 'FieldsToReturn' => null); }
public function setUp() { parent::setUp(); ezpINIHelper::setINISetting('site.ini', 'SearchSettings', 'AllowEmptySearch', 'enabled'); ezpINIHelper::setINISetting('site.ini', 'RegionalSettings', 'SiteLanguageList', array('eng-GB')); $this->findINI = eZINI::instance('ezfind.ini'); $this->findINI->loadCache(true); $this->solrSearch = new eZSolr(); $this->object = new ezpObject('folder', 2); $this->object->name = 'foo'; $this->object->publish(); $this->object->addNode(43); // Add a location under Media node $this->solrSearch->addObject($this->object->object); }
/** * Run sub process. * * @param int $nodeID * @param int $offset * @param int $limit */ protected function runSubProcess($nodeID, $offset, $limit) { $count = 0; $node = eZContentObjectTreeNode::fetch($nodeID); if (!is_object($node)) { $this->CLI->error("An error occured while trying fetching node {$nodeID}"); $this->Script->shutdown(3); } $searchEngine = new eZSolr(); if ($subTree = $node->subTree(array('Offset' => $offset, 'Limit' => $limit, 'SortBy' => array(), 'Limitation' => array(), 'MainNodeOnly' => true))) { foreach ($subTree as $innerNode) { $object = $innerNode->attribute('object'); if (!$object) { continue; } //eZSearch::removeObject( $object ); //pass false as we are going to do a commit at the end $result = $searchEngine->addObject($object, false, $this->commitWithin * 1000); if (!$result) { $this->CLI->error(' Failed indexing ' . $object->attribute('class_identifier') . ' object with ID ' . $object->attribute('id')); } ++$count; } } $this->CLI->output($count); $this->Script->shutdown(0); }
} if ( $correct ) { $cli->output("Removing ghosts from solr"); $solrBase->deleteDocs($del_docs, false, true, false); } } if ( count($wrong_path) ) { $cli->output("\nWrong"); foreach ( $wrong_path as $n ) { $cli->output('[solr]: ' . $n->url_alias . ' [ez]: ' . $n->node()->urlAlias()); if ( $correct ) { $cli->output("Cleaning..."); $solrBase->deleteDocs(array($n->guid)); $solr->addObject($n->node()->object()); } } } $cli->output("\nDone"); $script->shutdown(); ?>
/** * Execute indexing of subtree * * @param int $nodeID * @param int $offset * @param int $limit * * @return int Number of objects indexed. */ protected function execute($nodeID, $offset, $limit) { $count = 0; $node = eZContentObjectTreeNode::fetch($nodeID); if (!$node instanceof eZContentObjectTreeNode) { $this->CLI->error("An error occured while trying fetching node {$nodeID}"); return 0; } $searchEngine = new eZSolr(); $nodeTreeParams = array('Offset' => $offset, 'Limit' => $limit, 'SortBy' => array(), 'Limitation' => array(), 'MainNodeOnly' => true); if (count($this->classIdentifiers) > 0) { $nodeTreeParams['ClassFilterType'] = 'include'; $nodeTreeParams['ClassFilterArray'] = $this->classIdentifiers; } if ($subTree = $node->subTree($nodeTreeParams)) { foreach ($subTree as $innerNode) { $object = $innerNode->attribute('object'); if (!$object) { continue; } //pass false as we are going to do a commit at the end $result = $searchEngine->addObject($object, false, $this->commitWithin * 1000); if (!$result) { $this->CLI->error(' Failed indexing ' . $object->attribute('class_identifier') . ' object with ID ' . $object->attribute('id') . ' and main node id ' . $object->attribute('main_node_id')); } ++$count; } } return $count; }
private function indexnode($nodeId) { $engine = new eZSolr(); $node = eZContentObjectTreeNode::fetch($nodeId); $object = eZContentObject::fetch($node->attribute('contentobject_id')); if ($object) { $result = $engine->addObject($object, false); $engine->commit(); } }
$info = false; $detail = false; $xml = false; $solr = false; $objectID = $Params['ObjectID']; if (NULL == $Params['ObjectID']) { $error = "Object ID or object remote_id not found"; } else { $object = eZContentObject::fetch(intval($objectID)); if (!$object instanceof eZContentObject) { $object = eZContentObject::fetchByRemoteID($objectID); } if ($object instanceof eZContentObject) { if ($object->attribute('can_read')) { $searchEngine = new eZSolr(); $result = $searchEngine->addObject($object, true); $xmlData = fakeAddObject($object); if ($xmlData == false) { $result = false; $xmlData = array(); } $info = array('object' => $object, 'result' => $result); $detail = array(); $attributes = $object->dataMap(); foreach ($attributes as $attribute) { $isSearchable = $attribute->attribute('contentclass_attribute')->attribute('is_searchable'); $documentFieldBase = ezfSolrDocumentFieldBase::getInstance($attribute); $detail[] = array('attribute' => $attribute, 'name' => $attribute->attribute('contentclass_attribute_name'), 'identifier' => $attribute->attribute('contentclass_attribute_identifier'), 'data_type_string' => $attribute->attribute('data_type_string'), 'is_searchable' => $isSearchable, 'ez_metadata' => $isSearchable ? trim(print_r($attribute->metadata(), 1)) : false, 'solr_metadata' => $isSearchable ? trim(print_r($documentFieldBase->getData(), 1)) : false, 'solr_metadata_class' => $isSearchable ? get_class($documentFieldBase) : false); } $xml = array(); foreach ($xmlData as $doc) {
) ); $script->initialize(); if(!($nodesId = $options['nodesId'])) { $cli->error("nodesId param is mandatory"); eZExecution::cleanExit(); } $searchEngine = new eZSolr(); foreach(explode(",", $nodesId) as $nodeId) { $node = eZContentObjectTreeNode::fetch($nodeId); $object = $node->attribute( 'object' ); if ( !$object ) { continue; } $result = $searchEngine->addObject( $object, false ); if ( !$result ) { $cli->error( ' Failed indexing ' . $object->attribute('class_identifier') . ' object with ID ' . $object->attribute( 'id' ) ); } eZContentObject::clearCache(); } //$searchEngine->optimize( true ); $script->shutdown(0);
$searchEngine = new eZSolr(); $needRemoveWithUpdate = $searchEngine->needRemoveWithUpdate(); while (true) { $entries = $db->arrayQuery("SELECT param FROM ezpending_actions WHERE action = 'index_object' GROUP BY param ORDER BY min(created)", array('limit' => $limit, 'offset' => $offset)); if (is_array($entries) && count($entries) != 0) { foreach ($entries as $entry) { $objectID = (int) $entry['param']; $cli->output("\tIndexing object ID #{$objectID}"); $db->begin(); $object = eZContentObject::fetch($objectID); $removeFromPendingActions = true; if ($object) { if ($needRemoveWithUpdate) { $searchEngine->removeObject($object, false); } $removeFromPendingActions = $searchEngine->addObject($object, false); } if ($removeFromPendingActions) { $db->query("DELETE FROM ezpending_actions WHERE action = 'index_object' AND param = '{$objectID}'"); } else { $cli->warning("\tFailed indexing object ID #{$objectID}, keeping it in the queue."); // Increase the offset to skip failing objects ++$offset; } $db->commit(); } $searchEngine->commit(); // clear object cache to conserve memory eZContentObject::clearCache(); } else { break;