【问题标题】:Magento Indexing of Catalog Products & its Attributes目录产品及其属性的 Magento 索引
【发布时间】:2011-07-12 14:59:33
【问题描述】:

我对 Magento 索引过程有一些疑问:

  • 首先,为什么 Magento 在新添加/修改每个产品或其任何属性后不以编程方式执行索引过程?当索引过程非常重要并且可以通过编程方式完成时,为什么管理员需要进行索引?
  • 在每个索引过程中,点击“重新索引数据”链接时,是所有产品都被索引(包括已经被索引的产品),还是只索引未索引的产品?
  • 如果我想查看/调试每个索引进程所花费的时间,那么我需要做什么和如何做?

【问题讨论】:

  • 请提供第 2 点和第 3 点的详细答案。这些是我的问题中非常重要的部分。谢谢

标签: magento indexing


【解决方案1】:

三部分答案,所以这应该值得三分,对吧? :)

1) 可能是因为索引往往是一项计算密集型任务,因此管理员可以选择一个低负载时段,或者通过 cron 安排索引在典型的低负载时间发生。

2) 所有产品都重新编入索引。如果您查看 Mage_CatalogIndex_Model_Indexer::plainReindex(),您会看到它执行 clear 以删除所有索引数据,然后将所有活动产品编入索引。

$this->_getResource()->clear(
            $attributeCodes,
            $priceAttributeCodes,
            count($priceAttributeCodes)>0,
            count($priceAttributeCodes)>0,
            count($priceAttributeCodes)>0,
            $products,
            $stores
);

<snip/>

$collection = $this->_getProductCollection($store, $products);
$collection->addAttributeToFilter(
         'status',
          array('in'=>Mage::getModel('catalog/product_status')->getSaleableStatusIds())
);
$this->_walkCollection($collection, $store, $attributeCodes);

_walkCollection 方法为每个产品创建索引的位置。

3) 您可以打开 Profiler。关于如何使用它有一些很棒的blogposts。您可以使用Varien_Profiler::start('Indexer') 等将密钥代码包装在Mage_CatalogIndex_Model_Indexer 中以检查所用时间。

【讨论】:

  • 非常感谢您详细回答。您对 Magento 有一定的了解,我真的很感激!
  • 什么是 IIRC?能否请您详细解释一下第 2 点问题?
  • IIRC = 如果我没记错 - 基本上这意味着我很确定这是正确的,但不是 100% 确定!
  • 感谢您回答我的愚蠢问题。无论如何,您能否具体提供有关第 2 点的更多详细信息?然后我可以批准这个答案作为我的问题所需的正确答案。请!
  • 你可以在 shell 中为你的索引计时。 time php -f shell/indexer.php -- -reindex catalog_product_flat 输入 php -f shell/indexer.php help 查看所有索引选项,用逗号分隔多个索引,例如 php -f shell/indexer.php -- -reindex catalog_product_flat,catalog_category_flat
【解决方案2】:

为了扩展 Jonathan 的答案,每次保存产品时都运行整个索引是很愚蠢的。 Magento 对类别产品等事物的索引过程涉及截断表并再次运行索引查询。如果您要保存 20 种不同的产品,并且为每种产品重新生成索引,那么您将浪费大量时间。由于系统无法猜测您打算连续保存 20 个产品的时间,因此需要您自己运行索引。

【讨论】:

  • 我认为在保存单个产品时,如果您为该索引设置了“保存时索引”,那么 Magento 只会在现有索引中添加/更改该产品,而不是删除索引和从头开始重建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2012-07-29
  • 1970-01-01
相关资源
最近更新 更多