Php 在MySQL和CodeIgniter中使用匹配和对抗

Php 在MySQL和CodeIgniter中使用匹配和对抗,php,mysql,codeigniter,full-text-indexing,match-against,Php,Mysql,Codeigniter,Full Text Indexing,Match Against,我正试图在我的codeIgniter项目中实现一个搜索功能。我有一个名为product_search的表,其中使用以下命令设置全文索引: ALTER TABLE `product_search` ADD FULLTEXT (`prod_title`, `prod_desc`) 然后,我使用以下codeIgniter代码进行搜索: $this->db->select("prod_id"); $this->db->where("MATCH (`

我正试图在我的codeIgniter项目中实现一个搜索功能。我有一个名为product_search的表,其中使用以下命令设置全文索引:

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");
但是,这会导致以下错误:

错误号码:1064

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解在第3行中对“silk”或类似于“%silk%”的产品id或类似于“%silk%”的产品sku或“prod”使用的正确语法

从product_search中选择product_id,其中将product_title、product_desc与“silk”或类似于“%silk%”的product_id或类似于“%silk%”的product_sku或类似于“%silk%”的product_title或类似于“%silk%”的product_desc匹配

文件名:models/products\u model.php

电话号码:430

为什么要在比赛中打回击

如果删除匹配之间的空格及其后面的括号,则会收到以下错误消息:

错误号码:1191

找不到与列列表匹配的全文索引

从产品搜索中选择产品id,其中将产品标题、产品描述与“丝绸”或类似于“%silk%”的产品id或类似于“%silk%”的产品sku或类似于“%silk%”的产品标题或类似于“%silk%”的产品描述匹配

文件名:models/products\u model.php

电话号码:430

但是,我使用top命令添加全文索引。
出了什么问题?

我通过在下面的语句中添加布尔模式来解决问题:

SELECT `prod_id`
FROM (`product_search`)
WHERE MATCH (`prod_title`, `prod_desc`) AGAINST ('silk' IN BOOLEAN MODE)
OR `prod_id` LIKE '%silk%' OR `prod_sku` LIKE '%silk%'
OR `prod_title` LIKE '%silk%'
OR `prod_desc` LIKE '%silk%';

我通过在下面的语句中添加布尔模式来解决问题:

SELECT `prod_id`
FROM (`product_search`)
WHERE MATCH (`prod_title`, `prod_desc`) AGAINST ('silk' IN BOOLEAN MODE)
OR `prod_id` LIKE '%silk%' OR `prod_sku` LIKE '%silk%'
OR `prod_title` LIKE '%silk%'
OR `prod_desc` LIKE '%silk%';