CodeIgniter アプリで全文検索に使用するレシピとタグの 2 つのテーブルがあります。1 つのレシピごとに、タグの数に制限はありません (タグの例: おいしい、チキン、ディナー)。
レシピ テーブルのサンプル行:
レシピ ID: 1.....レシピ名: Mo's Chicken Dinner.....
レシピID:2.....レシピ名:Mo's Lobster Bisque.....
タグ テーブルのサンプル行:
対応するレシピ ID: 1.....タグ: おいしい.....
対応するレシピ ID: 2.....タグ: シーフード.....
ロブスターを検索して、名前が「ロブスター」に一致するレシピが検索に表示されるようにしたいと考えています。しかし、「シーフード」を検索して、対応するレシピを含むタグを表示したいと考えています。
これが私のコードです(結合ステートメントを追加する前に、1つのテーブル全文検索で機能しました):
// Execute our SQL statement and return the result
$sql = "SELECT recipes.name,recipes.durationtotal
FROM recipes LEFT JOIN tags ON recipes.id = tags.recipes_id
WHERE MATCH (recipes.name,tags.tag) AGAINST (?) > 0 AND user_id = ".$id." ORDER BY recipes.name ASC";
$query = $this->db->query($sql, array($terms, $terms));
return $query->result();
これを入れた後、エラーが発生します:
Error Number: 1210
Incorrect arguments to MATCH
SELECT recipes.name,recipes.durationtotal FROM recipes LEFT JOIN tags ON recipes.id = tags.recipes_id WHERE MATCH (recipes.name,tags.tag) AGAINST ('f') > 0 AND user_id = 1 ORDER BY recipes.name ASC
Filename: search_model.php
Line Number: 15
15 行目は次のとおりです。$query = $this->db->query($sql, array($terms, $terms));
助けてくれてありがとう!