Я пытаюсь реализовать функцию поиска в моем проекте codeIgniter. У меня есть таблица под названием product_search, где я установить полнотекстовый индекс с помощью следующей команды:Использование Match and Against в MySQL и CodeIgniter
ALTER TABLE `product_search` ADD FULLTEXT (`prod_title`, `prod_desc`)
Я тогда искать его, используя следующий CodeIgniter код:
$this->db->select("prod_id");
$this->db->where("MATCH (`prod_title`, `prod_desc`) AGAINST ('{$searchStr}')");
$this->db->or_where("prod_id LIKE '%{$searchStr}%'");
$this->db->or_where("prod_sku LIKE '%{$searchStr}%'");
$this->db->or_where("prod_title LIKE '%{$searchStr}%'");
$this->db->or_where("prod_desc LIKE '%{$searchStr}%'");
$query = $this->db->get("product_search");
Это, однако, приводит к следующая погрешность:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AGAINST ('silk') OR
prod_id
LIKE '%silk%' ORprod_sku
LIKE '%silk%' OR `prod' at line 3SELECT
prod_id
FROM (product_search
) WHEREMATCH
(prod_title
,prod_desc
) AGAINST ('silk') ORprod_id
LIKE '%silk%' ORprod_sku
LIKE '%silk%' ORprod_title
LIKE '%silk%' ORprod_desc
LIKE '%silk%'Filename: models/products_model.php
Line Number: 430
Почему он помещает backticks вокруг MATCH?
Если удалить пространство Inbetween MATCH и скобок после него, то я получаю сообщение об ошибке:
Error Number: 1191
Can't find FULLTEXT index matching the column list
SELECT
prod_id
FROM (product_search
) WHERE MATCH(prod_title
,prod_desc
) AGAINST ('silk') ORprod_id
LIKE '%silk%' ORprod_sku
LIKE '%silk%' ORprod_title
LIKE '%silk%' ORprod_desc
LIKE '%silk%'Filename: models/products_model.php
Line Number: 430
Однако, я использовал верхнюю команду, чтобы добавить полнотекстовой индекс. Что происходит не так?