Magento Search 'relevance'值始终为0

标签 magento

我注意到我似乎无法在默认搜索中对相关性进行排序。不管我尝试使用ASC还是DESC,结果始终是相同的,而在此方面相关性很差。

经过进一步调查,我在 Mage_CatalogSearch_Model_Resource_Fulltext_Collection 中找到了addSearchFilter()方法:

/**
 * Add search query filter
 *
 * @param string $query
 * @return Mage_CatalogSearch_Model_Resource_Fulltext_Collection
 */
public function addSearchFilter($query)
{
    Mage::getSingleton('catalogsearch/fulltext')->prepareResult();

    $this->getSelect()->joinInner(
        array('search_result' => $this->getTable('catalogsearch/result')),
        $this->getConnection()->quoteInto(
            'search_result.product_id=e.entity_id AND search_result.query_id=?',
            $this->_getQuery()->getId()
        ),
        array('relevance' => 'relevance')
    );

    Zend_Debug::dump($this->getData());exit;

    return $this;
}

我的数据转储的结果显示结果很好,但是“相关性”列始终为0.00000。我没有对目录搜索进行任何更改,这是Magento 1.6.0。

我也转储了实际的SQL:
SELECT `e`.*, `search_result`.`relevance` FROM `catalog_product_entity` AS `e` INNER JOIN `catalogsearch_result` AS `search_result` ON search_result.product_id=e.entity_id AND search_result.query_id='33'

如果其他人在计算相关性方面有更多经验,我将非常感谢指导。

最佳答案

简短答案:相关性仅在全文搜索模式下使用。

背景

在管理界面中,您可以为Magento配置“搜索类型”。
可以在系统>配置>目录>目录搜索>搜索类型下找到此设置。

如果切换到全文本(并在重新索引后)并清除catalogsearch_query表,Magento将使用MySQL全文本搜索功能,在查询中指定WHERE条件,如下所示:

...MATCH (s.data_index) AGAINST (:query IN BOOLEAN MODE) AS `relevance`...

这将返回一个浮点数,该浮点数将用作相关值。普通匹配将使您的相关性为1。如果索引包含搜索词的次数超过一次,则其相关性就会更高。

bool 全文搜索还允许使用搜索修饰符,例如“+ this -notThis”。
有关MySQL bool 全文搜索的相关性加权的更多信息,请参见http://dev.mysql.com/doc/refman/5.1/de/fulltext-boolean.html

如果使用搜索模式“Like”,则相关性始终为0(如您所注意到的)。

索引编制

Magento建立搜索索引的方法不是很直观,我建议看一下表catalogsearch_fulltext。然后,通过为属性调整“在快速搜索中使用”属性来调整要在搜索中使用的属性。可以在目录>属性>管理属性下找到此设置。然后为目录搜索索引重新编制索引。
我还建议您在调整属性后清除catalogsearch_result表。

关于Magento Search 'relevance'值始终为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117162/

相关文章:

Magento 翻译在在线程序中正常,但不能作为 cronjob 运行

magento - 在magento后端创建一个WYSIWGY字段

email - Magento电子邮件模板If语句

php - Magento 站点地图导致错误

Magento 内容不显示

php - Magento 以编程方式更改库存可用性

magento - 如何在Magento系统配置中添加所见即所得编辑器?

Magento : How to get countryID from selected/entered shipping address

Magento 自定义模块 - 如何添加带有父类别的自定义选择框

wordpress - 如何将 Magento 产品集成到我的 WordPress 网站中?