php - 搜索名字和姓氏,按匹配准确度排序

标签 php mysql search sql-like

我正在尝试在我的网站(这是一个社交网站)上构建一个简单的搜索,我想搜索在该网站上注册的所有用户,并返回一个建议列表(这就是这个查询的目的,建议列表)。

我要搜索的表包含以下列:userIDfnamelname

我想搜索最后 2 列(2 个名称),并按照与搜索词匹配的名称数量的顺序返回它们。

我要运行的查询的第一部分是:

SELECT userID, fname, lname FROM names WHERE

但剩下的,我需要帮助。

编辑: 使用此查询进行搜索:

SELECT userID, fname, lname FROM names WHERE fname LIKE '%".$term."%' OR lname LIKE '%".$term."%'

我怎样才能对它进行排序,以便结果按匹配项开头的结果排序,所以当我键入 M 时,它返回说,Mark before 亚当

最佳答案

你可以试试

SELECT userID, fname, lname,
myRank = CASE WHEN fname = @term THEN 4 
WHEN fname like @term + '%' THEN 3
WHEN fname like '%' + @term + '%' THEN 2
ELSE.... whatever ranking you want
FROM names 
WHERE fname LIKE '%' + @term + '%' 
   OR lname LIKE '%' + @term + '%'
ORDER BY myRank DESC

关于php - 搜索名字和姓氏,按匹配准确度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13328213/

相关文章:

java - 我必须使用按钮将特定行从 mysql 添加到 JTable

C - Libcurl - 如何搜索带有特殊字符 (ä,ö,ü) 的邮件

php - 数据库位置搜索

search - 自动完成的简单 Solr 模式问题

PHP:如何将 CSV 文件的内容逐行导入 MySQL 数据库?

php - 流明 PHP : hidden password field in model not filled using Model->fill()

mysql - 连接两个表时如何避免重复

javascript - 如何在vuejs中用循环包装2个或更多的html元素

php - Composer 包,自动加载非基于类的文件

mysql - 根据另一个表中的月份更新表