mysql在短语中搜索关键字,通过找到大多数关键字排序

时间:2012-11-16 01:42:55

标签: php mysql codeigniter

我有一个包含3列的mysql表,其中包含常见问题解答搜索的数据,我想让用户输入他们想要回答的问题,并在表格中的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

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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();