我在mysql中有一个用户表,其中包含cols:user_id
,first_name
,middle_name
,last_name
我想要一个可以返回user_id
列表的查询按照最接近的匹配顺序排序。
E.G。如果我搜索John f kenedy或f john kenedy或kenedy f john等,将返回相同的结果排序类似:john f kenedy as first,john kenedy(另一个用户)as second,john kent as third,so so上....
我的服务器脚本是php这么简单&高效的PHP算法是可以接受的,但它应该很快,因为它会在文本框中输入时提示iser。
感谢。
答案 0 :(得分:0)
您可以做的是计算与您的查询和订单匹配的字段数:
order by (@QUERY like concat('%', first_name, '%') +
@QUERY like concat('%', middle_name, '%') +
@QUERY like concat('%', last_name, '%')
) desc
然而,这是一项相当昂贵的操作,索引无法改进。
如果您正在进行此类搜索,您最好了解MySQL中的全文搜索功能(启动here)。