यह Magento CE 1.6 और नए में ठीक काम करता है:
$event = Mage::getSingleton('index/indexer')->logEvent(
$product,
$product->getResource()->getType(),
Mage_Index_Model_Event::TYPE_SAVE,
false
);
Mage::getSingleton('index/indexer')
->getProcessByCode('catalog_url') // Adjust the indexer process code as needed
->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)
->processEvent($event);
उपलब्ध अनुक्रमणिका कोड को क्वेरी का उपयोग करके देखा जा सकता है:
SELECT indexer_code FROM index_process;
एक देशी Magento 1.7 में हैं:
+---------------------------+
| indexer_code |
+---------------------------+
| cataloginventory_stock |
| catalogsearch_fulltext |
| catalog_category_flat |
| catalog_category_product |
| catalog_product_attribute |
| catalog_product_flat |
| catalog_product_price |
| catalog_url |
| groupscatalog2_category |
| groupscatalog2_product |
| tag_summary |
+---------------------------+
Magento EE 1.13 में यह अलग है, वहाँ अनुक्रमणिका स्वचालित रूप से प्रत्येक क्रोन रन (हर मिनट) पर परिवर्तित इकाइयाँ उठाती है।
अपडेट करें
उपरोक्त उत्तर 100% सही है, वैसे भी मुझे लगता है कि नीचे दी गई जानकारी कुछ और जोड़ सकती है।
यदि आपको किसी उत्पाद में बस कुछ विशेषताओं के मूल्यों को बदलने की जरूरत है और आप इस फ़ंक्शन का उपयोग कर सकने वाले सापेक्ष सूचकांक तालिका को स्वचालित रूप से अपडेट कर सकते हैं:
Mage::getSingleton('catalog/product_action')->updateAttributes();
यदि आप अपने स्वयं के द्वारा रीसैन्डेक्स का प्रबंधन करना चाहते हैं तो इसके बजाय रिसोर्स मॉडल का उपयोग करें: Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
उदाहरण के लिए, मैं एक उत्पाद में केवल कुछ विशेषताओं को तेजी से अपडेट करने के लिए निम्नलिखित फ़ंक्शन का उपयोग करता हूं।
public function updateProductAttribute($product_id, $arrayChanges, $reindex = true)
{
if (!is_array($product_id)) {
$product_id = array($product_id);
}
// ths should trigger all required reindex
$update = Mage::getSingleton('catalog/product_action');
// Update value
if (!$reindex) {
$update = Mage::getResourceSingleton('catalog/product_action');
}
$update->updateAttributes($product_id, $arrayChanges, 0);
}
ध्यान दें:
यदि आपको उत्पादों के समूह में समान विशेषता / मान जोड़े को बदलने की आवश्यकता है, तो आप संपूर्ण सरणी पास कर सकते हैंproduct_ids