1
    $select->where('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string);
    $select->order('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?) DESC',$searching);

得到错误:

消息:SQLSTATE[HY093]:无效参数号:未绑定参数

问题似乎与 $select->order 一致。

这是为了结果的相关性。它在 Zend Framework 中应该是什么样子?

搜索似乎有些问题。它搜索的一些词和一些不搜索的词。为什么会这样?:Z

谢谢

4

1 回答 1

4

我认为您需要更改您的选择语句,以便将 MATCH AGAINST 部分从 order 子句移动到字段列表中。

例如

代替

SELECT *
FROM mytable
WHERE match(text,phone,phone2) AGAINST ('something')
ORDER BY match(text,phone,phone2) AGAINST ('something');

你将会拥有

SELECT mytable.*, match(text,phone,phone2) AGAINST ('something') AS relevanceScore
FROM mytable
WHERE match(text,phone,phone2) AGAINST ('something')
ORDER BY relevanceScore DESC;

因此,与您的案例有关的更多信息,您的选择看起来更像

$select->from('tableName',array('*','relevenceScore'=>$db->quoteInto('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string));
$select->where('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string);
$select->order('relevanceScore DESC');
于 2010-02-03T09:48:44.933 回答