对于Magento搜索的一点探讨

Magento的搜索精度问题一直是困扰,本文探讨如何通过修改Fulltext.php、调整后台设置和数据库配置进行优化,包括设置search Type为Fulltext,修改ft_min_word_len,重新索引,以及调整Result.php中搜索结果的展示顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Magento搜索不够精准已经是家喻户晓了, 搜索个关键词根本得不到我们想要的结果,很苦恼
那么对于这种需求,我需要尝试去做一些优化
app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
在这里插入图片描述

其中的一行 “$likeCond = '(' . join(' OR ', $like) . ')';” 已改成“$likeCond = '(' . join(' AND ', $like) . ')';”,即把“OR”改成了“AND”

1.后台设置system–>configuration
页面刷新后,点击左侧的catalog页面刷新后,点击catalog search
将search Type改为Fulltext
ft_min_word_len=2

2.进入数据库,运行sql语句:

repair table catalogsearch_fulltext quick;

3.重新索引
system->index managere 点击submit
刷新缓存(system–>cache Manager)

还有一种场景就是当我们搜索的时候,搜索结果总是排在搜索列表的最后面,这个我们要去改变一下数据的展示顺序
找到/app/code/core/Mage/CatalogSearch/Block/Result.php
找到setListOrders()方法

    public function setListOrders()
    {
        $category = Mage::getSingleton('catalog/layer')
            ->getCurrentCategory();
        /* @var $category Mage_Catalog_Model_Category */
        $availableOrders = $category->getAvailableSortByOptions();
        unset($availableOrders['position']);
        $availableOrders = array_merge(array(
            'relevance' => $this->__('Relevance')
        ), $availableOrders);

        $this->getListBlock()
            ->setAvailableOrders($availableOrders)
            ->setDefaultDirection('desc')
            ->setSortBy('relevance');

        return $this;
    }

修改成

    public function setListOrders()
    {
        $category = Mage::getSingleton('catalog/layer')
            ->getCurrentCategory();
        /* @var $category Mage_Catalog_Model_Category */
        $availableOrders = $category->getAvailableSortByOptions();
        unset($availableOrders['position']);
        $availableOrders = array_merge(array(
            'relevance' => $this->__('Relevance')
        ), $availableOrders);

        $this->getListBlock()
            ->setAvailableOrders($availableOrders)
            ->setDefaultDirection('asc')
            ->setSortBy('relevance');

        return $this;
    }

保存即可…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值