Codeigniter多词搜索时遇到的问题

时间:2019-04-19 13:06:10

标签: php codeigniter full-text-search

我正在为我的书店项目创建一个CodeIgniter搜索。单个单词搜索是可以的,但是当我搜索多个单词时却遇到​​了问题。我该如何解决这个问题。

我的控制器

public function search()
{
    /*=== LOAD DYNAMIC CATAGORY ===*/
    $this->load->model('admin_model');
    $view['category'] = $this->admin_model->get_category();
    /*==============================*/


    $this->form_validation->set_rules('search_book', "Search",'required');

    if($this->form_validation->run() == FALSE)
    {
        #...Redirected same page after action
        redirect($_SERVER['HTTP_REFERER']);
    }
    else
    {
        $query = $this->input->post('search_book');

        $this->load->model('user_model');
        $view['books'] = $this->user_model->search($query);


        $view['user_view'] = "users/search_books";
        $this->load->view('layouts/user_layout', $view);
    }

}

我的模型

public function search($query)
{
    $this->db->order_by('id', 'DESC');
    $this->db->from('books');
    $this->db->like('book_name', $query);
    $this->db->where('status', 1);
    $q = $this->db->get();
    return $q->result();
}

就像我在搜索框中编写 PHP 一样,它带给我所有标题为PHP的书。对我来说还可以。

但是当我在搜索框中编写 PHP BOOKS 时,显示没有找到书。

我希望它显示任何单词匹配的结果。

1 个答案:

答案 0 :(得分:2)

您可以替换

$this->db->like('book_name', $query);

条件为

$str = str_replace(" ","|", $query);
$this->db->where("book_name rlike '$str'");

您可以获得有关rlike here的更多详细信息。

这里提供了更好的full text search帮助,供您参考。