我注意到我似乎无法对默认搜索中的相关性进行排序.无论我是尝试ASC还是DESC,结果总是相同的,而且相关性很差.
经进一步调查,我发现addSearchFilter()方法Mage_CatalogSearch_Model_Resource_Fulltext_Collection:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
我的数据转储结果显示结果很好,但"相关性"列始终为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'
Run Code Online (Sandbox Code Playgroud)
如果其他人有更多计算相关性的经验,我会非常感谢方向.
magento ×1