如何管理大量产品变体?

问题描述 投票:0回答:1

我是开发人员,并且是Prestashop世界的新手。

我面临的一个问题是我尚未找到使用Prestashop应对该问题的正确方法。

我正在建立一个拥有大型产品目录(> 10k)的珠宝店。这些环有材料(例如金)和尺寸(20 en)两种。这样,变化的数量就会迅速增加。对于1000种产品,4种材料,20种尺寸,我已经有了8万种产品。而且距目录的现实还很远。

我能够在空白的Prestashop上测试类似的目录,结果发现,多面搜索受此数量的影响很大,SQL查询很容易花费10秒钟以上的时间,这是不可行的。

手指大小是订单准备中不必要的信息,不同大小的同一个戒指具有相同的产品代码。然后可以将手指的大小作为个性化选项进行管理。另一方面,价格差异可以应用于不同的大小。而且这个变化量取决于材料……这的确看起来像磁偏角。另一方面,大多数戒指的尺寸没有价格差,这是一个例外。

因此,我寻求您的帮助,并继续进行我的研究。有没有一种方法可以优化多面搜索? (已经分析了模块的源代码,乍一看我会拒绝)。有没有人处理过非常庞大的产品目录?如果不是,是否存在一个模块,可以通过变化管理具有潜在价格的个性化选项?如果没有交钥匙解决方案,您认为最佳方法是什么? (例如,通过Elasticsearch,保持变形并解决多面搜索的性能,还是像高级高级个性化一样管理大小?)

非常感谢您的帮助

编辑:

根据要求,这是由natiuve facetedsearch模块构建的缓慢的SQL查询:

SELECT p.id_product,
       p.id_manufacturer,
       SUM(sa.quantity) as quantity,
       p.condition,
       p.weight,
       p.price,
       cp.position
FROM ps_product p
         LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product)
         LEFT JOIN ps_product_attribute_combination pac ON (pa.id_product_attribute = pac.id_product_attribute)
         LEFT JOIN ps_stock_available sa ON (p.id_product = sa.id_product AND
                                             IFNULL(pac.id_product_attribute, 0) = sa.id_product_attribute AND
                                             sa.id_shop = 1 AND sa.id_shop_group = 0)
         INNER JOIN ps_category_product cp ON (p.id_product = cp.id_product)
         INNER JOIN ps_category c ON (cp.id_category = c.id_category AND c.active = 1)
         INNER JOIN ps_product_shop ps ON (p.id_product = ps.id_product AND ps.id_shop = 1 AND ps.active = TRUE)
WHERE ((pac.id_attribute = 1))
  AND p.visibility IN ('both', 'catalog')
  AND c.nleft >= 3
  AND c.nright <= 4
  AND ps.id_shop = '1'
GROUP BY p.id_product

ps_product_attribute包含60万行,ps_product_attribute_combination 120万行。

谢谢

prestashop prestashop-1.7
1个回答
0
投票

您应该保持变化(我认为prestashop称其为组合),创建自定义定价机制会很麻烦,因为您必须在不同的位置实施该定价机制,并且某些模块甚至可能直接检查数据库中的价格。另外,大多数prestashop查询都很简单,可以正确使用id,因此它们足够快来处理大型数据库。

ps_facetedsearch是使用一些索引表的模块。该索引可能很慢,或者可能需要一些时间来构建。如果索引构建缓慢,则可以不时(在目录导入或产品修改之后)触发它。如果从本质上讲它很慢,那么最好的选择就是使用效率更高的索引制作自己的facetedsearch模块。

© www.soinside.com 2019 - 2024. All rights reserved.