我尝试创建一个搜索引擎,根据用户的名称搜索用户。
这是我此时可以做的一个例子: 我想搜索大卫(姓)琼斯(姓名) - >当我输入:' 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;
}
答案 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%"