0

我有一个 mysql 表,其中包含 3 列数据,用于 FAQ 搜索,我想让用户键入他们想要回答的问题,并在表中的 3 列中搜索问题中出现在任何列中的关键字桌子。并按关键字匹配次数最多的行对结果进行排序。

我正在使用 Code Igniter 框架。目前,我的模型中有一个带有 FULLTEXT 搜索的查询:

$new_query = 'This is a question';
$sql = "SELECT ques_id, ques_desc FROM ec_questions WHERE MATCH (ques_desc,ques_tags,ques_answer) AGAINST (? IN BOOLEAN MODE) LIMIT 15";
$query = $this->db->query($sql, array($new_query));
return $query->result_array();

但是上面似乎并没有真正返回我想要的结果,帮助?

谢谢

“显示创建表”结果: http: //pastebin.com/nKd1JT5n

4

2 回答 2

1

我认为您不需要IN BOOLEAN MODE,因为这会增加对特殊修饰符+等的支持-http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html 。

implode()不能直接在字符串上工作

string implode ( string $glue , array $pieces )

尝试

$new_query = 'This is a question';

代替

$new_query = implode(' ', 'This is a question');

于 2012-11-16T01:56:47.383 回答
1

而不是内爆,看起来你想使用爆炸: http: //php.net/manual/en/function.explode.php

修改后的代码如下所示:

$new_query = explode(' ', 'This is a question');
$sql = "SELECT ques_id, ques_desc FROM ec_questions WHERE MATCH (ques_desc,ques_tags,ques_answer) AGAINST (? IN BOOLEAN MODE) LIMIT 15";
$query = $this->db->query($sql, array($new_query));
return $query->result_array();
于 2012-11-16T02:02:23.747 回答