最佳搜寻比对

时间:2018-09-26 19:01:48

标签: php mysql

我正在尝试为网站实施最相关的搜索结果。

下面是我想要的样子:

如果有人输入“ Beauty”,则应首先搜索任何帐户用户名是否具有句柄“ @beauty”,并首先显示该名称,然后其余符合以下条件的帐户:

  • 匹配关键字
  • 句柄或帐户名中的关键字
  • 帐户简介中的关键字

我当前正在使用的代码:

$searchset = mysqli_real_escape_string($conn, rtrim($_GET['search']));
$sql = "SELECT * FROM accounts WHERE username LIKE '%".$searchset."%' OR keywords LIKE '%".$searchset."%' OR bio LIKE '%".$searchset."%')";

我一直在阅读使用加权搜索或mysql MATCH()的方法,但是我无法找出实现所需结果的最佳代码。

1 个答案:

答案 0 :(得分:2)

一个简单的ORDER BY应该可以完成这项工作:

$sql = "SELECT * FROM accounts WHERE username LIKE '%".$searchset."%' OR keywords LIKE '%".$searchset."%' OR bio LIKE '%".$searchset."%') ORDER BY '$searchset' != username";

您应该查看准备好的语句,我建议使用PDO代替mysqli。语法更加现代,并且有许多快捷方式和便捷方法。