我有一个包含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
答案 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();