0

FAQ検索用のデータを含む3列のmysqlテーブルがあります。ユーザーに回答したい質問を入力してもらいたいのですが、テーブルの3列で、質問内のいずれかの列に表示されるキーワードを検索します。テーブル。そして、キーワードの一致数が最も多い行で結果を並べ替えます。

私はCodeIgniterフレームワークを使用しています。現在、モデルに全文検索を使用したクエリがあります。

$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

http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.htmlなどIN BOOLEAN MODEの特別な修飾子のサポートが追加されるため、+必要ないと思います。-

また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 に答える