Magento目录搜索查询说明

时间:2014-09-09 19:47:18

标签: mysql magento

更新:问题已解答,请参阅Magento Catalog Search Query Constraint Error了解我的后续问题。

在Magento目录中进行某些搜索时,我遇到了外键约束错误。这是一个导致该问题的查询:

INSERT INTO `catalogsearch_result` 
(
    SELECT 
        '0', 
        `s`.`product_id`, 
        -(
            ( MATCH(`s`.`data_index`) AGAINST ('ip335') ) + 
            ( 5 * ( MATCH(`s`.`data_index_1`) AGAINST('ip335') ) ) + 
            ( 3 * ( MATCH(`s`.`data_index_2`) AGAINST('ip335') ) ) + 
            ( 2 * ( MATCH(`s`.`data_index_3`) AGAINST ('ip335') ) ) 
        ) 

    FROM `mikkelrickycatalogsearch_fulltext` AS `s` 

    INNER JOIN `catalog_product_entity` AS `e`
        ON `e`.`entity_id`=`s`.`product_id` 

    WHERE 
        (
            (`s`.`data_index` LIKE '%ip335%')
        ) 
        AND `s`.`store_id`='2'
) 
ON DUPLICATE 
    KEY UPDATE `relevance` = VALUES(`relevance`);

我们正在使用MikkelRicky_CatalogSearch扩展程序,但即使是核心搜索代码也会产生类似的查询(INSERT/ON DUPLICATE KEY)。

我试图在SQL中理解这种TYPE查询。我根本不明白INSERT语句如何与DUPLICATE KEY UPDATE一起使用。有人能提供一些实际的解释吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果MySQL发现query_id的密钥product_idcatalogsearch_result与MySQL引擎更新值relevance = VALUES('relevance');重复,而不是插入