再インデックスをトリガーせずに製品属性を更新することは可能ですか?
知られているように、load()/setData()/save() シナリオは再インデックスをトリガーします。
「Mage_Catalog_Model_Product_Action」の「updateAttributes」メソッドを調べましたが、製品の再インデックスもトリガーすると思います。
/**
* Update attribute values for entity list per store
*
* @param array $productIds
* @param array $attrData
* @param int $storeId
* @return Mage_Catalog_Model_Product_Action
*/
public function updateAttributes($productIds, $attrData, $storeId)
{
$this->_getResource()->updateAttributes($productIds, $attrData, $storeId);
$this->setData(array(
'product_ids' => array_unique($productIds),
'attributes_data' => $attrData,
'store_id' => $storeId
));
// register mass action indexer event
Mage::getSingleton('index/indexer')->processEntityAction(
$this, Mage_Catalog_Model_Product::ENTITY, Mage_Index_Model_Event::TYPE_MASS_ACTION
);
return $this;
}
「// マス アクション インデクサー イベントの登録」の下のコードは、インデクサー アクションをトリガーするようです。