CodeIgniter查询生成器的FULLTEXT索引匹配问题

时间:2019-04-12 07:28:46

标签: php mysql codeigniter-3

我正在尝试基于CodeIgniter查询生成器创建全文本搜索索引,但结果却很奇怪:

$(document).ready(function(){
    $("tr").each(function(){
       $(this).children("td").each(function(){
           if($(this).text() === "")
           {
              $(this).parents("tr").remove();
           }        
       });
    });
});

但是,我进行了一些研究以在phpMyAdmin Web客户端中手动运行此查询,因此我只将查询代码精确地复制到那里,结果工作正常。

这是我的模特

Error Number: 1191</p><p>Can't find FULLTEXT index matching the column list</p><p>SELECT *
FROM `posts`
LEFT JOIN `post_reg_sub_cat` ON `post_reg_sub_cat`.`id`=`posts`.`regional`
LEFT JOIN `post_reg_cat` ON `post_reg_cat`.`id_reg_cat`=`post_reg_sub_cat`.`id_reg_cat`
WHERE `id_post` != '129'
AND `post_reg_cat`.`reg_cat` = 'lampung'
AND MATCH (title) AGAINST("saya-punya-3-pertanyaan-untuk-brigita-manohara")
 LIMIT 5</p><p>Filename: models/M_api.php</p><p>Line Number: 347

这是怎么回事?

1 个答案:

答案 0 :(得分:1)

应该这样

首先请确保已将列标题添加到Phpmyadmin中的FULLTEXT索引中,或者可以使用下面的查询

ALTER TABLE `Table_name` ADD FULLTEXT (`title`)

然后在选择第一个表语法之后,对查询进行一些更改

 $this->db->from('first_table_name');

然后在“匹配”匹配项的使用方式如下

$this->db->where('MATCH (table_name.title) AGAINST("'.$slug.'")');

为每个列使用table_name.column名称,因为您使用的是联接,如果其他表中的名称列相同,则会导致崩溃。