public function catalog_product_delete_before($observer) { if ((int) Mage::getStoreConfig('solr/indexer/product_update')) { $object = $observer->getEvent()->getDataObject(); if (is_object($object) && $object->getId()) { $adapter = new DMC_Solr_Model_SolrServer_Adapter_Product(); $solr = Mage::helper('solr')->getSolr(); $solr->deleteByQuery('id:' . $object->getId() . ' AND row_type:' . $adapter->getType()); $solr->commit(); } } }
/** * This method is called by the core indexer process * in case of saving (insert/update) a product */ protected function _processEvent(Mage_Index_Model_Event $event) { $solr = Mage::helper('solr')->getSolr(); $object = $event->getDataObject(); // if the product is not active anymore, we will remove it from solr index if ($object->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { $solr->deleteByQuery("id:{$object->getId()}"); Mage::helper('solr/log')->addDebugMessage('The object #' . $object->getId() . ' is not active and was therefore deleted.'); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('solr')->__('The Product has been removed from Solr.')); return; } // $object contains the full product object if ($event->getEntity() == 'catalog_product' && $event->getType() == 'save' && $event->getDataObject()) { if ((int) Mage::getStoreConfig('solr/indexer/product_update')) { $storeId = $object->getStoreId(); // to-do // index just those store views, we need /* $adapter = new DMC_Solr_Model_SolrServer_Adapter_Product(); $document = $adapter->getSolrDocument(); if($document->setObject($object)) { $document->setStoreId($storeId); // add doducment to adapter object $solr->addDocument($document); #echo '<pre>'; #print_r($document);exit; } // send documents to solr $solr->addDocuments(); */ if (!$storeId) { $storeIds = Mage::helper('solr')->getStoresForReindex(); } else { $storeIds = array($storeId); } $adapter = new DMC_Solr_Model_SolrServer_Adapter_Product(); $productId = $object->getId(); foreach ($storeIds as $storeId) { $object = Mage::getModel('catalog/product')->setStoreId($storeId)->load($productId); $document = $adapter->getSolrDocument(); if ($document->setObject($object)) { $document->setStoreId($storeId); $solr->addDocument($document); } } $solr->addDocuments(); // commit data to solr $solr->commit(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('solr')->__('The Product has been updated at Solr.')); } } }
public function reindexProductIds($ids) { $solr = $this->getSolr(); $responce = $solr->ping(); if (!$responce) { return; } $product = Mage::getModel('catalog/product'); $solrProduct = new DMC_Solr_Model_SolrServer_Adapter_Product(); foreach ($ids as $one) { $product->load($one); if ($product->getId()) { $document = $solrProduct->getSolrDocument(); if ($document->setObject($product)) { $solr->addDocument($document); } } } $solr->addDocuments(); }