示例#1
0
 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();
         }
     }
 }
示例#2
0
 /**
  * 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.'));
         }
     }
 }
示例#3
0
 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();
 }