如何查询多个关键字

时间:2014-07-09 05:21:42

标签: php mysql codeigniter search model

我有一个搜索内容表的查询,以查找包含一些关键字的行。(codeigniter)

我有一个用于存储关键字的列(省名)。

我有一个主要省份和相关省份,我应该搜索它们。

我有一系列关键字,并不清楚它有多少索引。

那么如何使用多个关键字搜索内容

这是我在模型中的查询

public function province($province_name,$provinces_name,$language)
{
    $ps_name = str_replace("-", " ", $provinces_name);
    $lang=$language;

    $data = $this->db
                 ->select('*')
                 ->from('content')
                 ->where("language",$lang)
                 ->where("keywords",$province_name)
                 ->or_like("keywords","%$ps_name%")
                 ->limit("14")
                 ->order_by("id","DESC")
                 ->get();

    if ($data->num_rows > 0) {
        return $data->result();
    } else{
        return false;
    }
}

2 个答案:

答案 0 :(得分:0)

不确定CI特定的实现,但如果您正在使用多个关键字执行类似搜索的功能,则可以查看MySQL's full-text search(对于InnoDB或MyIASM)。或者是一本非常好的教程here

答案 1 :(得分:0)

如果您有一系列关键字,并且希望一次搜索每个关键字,则可以在循环中使用 $this->db->or_like() 。请尝试以下代码:

$keywords = array("keyword1",
                  "keyword2",
                  "keyword3",
             );

foreach($keywords as $k)
{
    $this->db->or_like("keywords", $k);
}

$this->db->where("language", $lang);
$this->db->limit("14");
$this->db->order_by("id", "DESC");
$query = $this->db->get("content");