创建搜索引擎

时间:2014-04-05 13:11:00

标签: php sql search

我尝试创建一个搜索引擎,根据用户的名称搜索用户。

这是我此时可以做的一个例子: 我想搜索大卫(姓)琼斯(姓名) - >当我输入:' Da'或者' vid'或者' J'或者'那些'它给了我大卫琼斯 但是当我输入大卫J'它什么都没有。

我必须在哪个方面更改查询以同时搜索这两个字段?

查询:

    public function Search($searchinput)
    {
            $db = new Db();
            $select = "SELECT * FROM tblusers WHERE name LIKE '%" . $searchinput . "%' OR surname LIKE'%" . $searchinput . "%'";
            $result = $db->conn->query($select);
            return $result;

}

3 个答案:

答案 0 :(得分:0)

使用CONCAT

尝试此查询
$select = "SELECT * FROM  tblusers WHERE name LIKE '%". $searchinput ."%' OR surname LIKE '%".  $searchinput ."%' OR CONCAT(name,' ',surname) LIKE '%". $searchinput ."%' ";

答案 1 :(得分:0)

可能用于制作你可以使用http://sphinxsearch.com/因为它在搜索自然语言的文本方面比MySQL快很多

答案 2 :(得分:0)

问题是你试图在名字或姓氏上匹配David J但是我看到你的数据库看起来如下:

Name  | Surnam
Davud | Jones

你的喜欢声明正在寻找:“大卫J”的名字或姓氏,它给你正确的结果(零)因为没有任何名字或姓氏的行像“大卫J”,在你的情况下是最好的解决方案是将姓名与姓氏联系起来,然后对他们作出如下陈述:

Select * FROM tbulsers WHERE CONCAT(name, ' ', surname) LIKE "%David J%"