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;
}
保存即可…