我在mysql中有一个带有cols:user_id、first_name、middle_name、last_name的用户表,我想要一个查询,该查询将返回按最接近匹配顺序排序的user_id列表。
例如,如果我搜索约翰·f·凯内迪或f·约翰·肯迪或肯迪·f·约翰等等,将返回一组排序类似的结果:约翰·f·凯内迪为第一名,约翰·肯特为第二名,约翰·肯特为第三名,以此类推。
我的服务器脚本是php,所以一个简单高效的php算法是可以接受的,但是它应该是快速的,因为它是输入文本框时向iser发出提示的源。
谢谢。
发布于 2013-11-30 15:57:58
您所能做的是计算与您的查询和顺序相匹配的字段的数量:
order by (@QUERY like concat('%', first_name, '%') +
@QUERY like concat('%', middle_name, '%') +
@QUERY like concat('%', last_name, '%')
) desc然而,这是一个相当昂贵的操作,索引无法改进。
如果您正在进行这种类型的搜索,最好是学习MySQL (start 这里)中的全文搜索功能。
https://stackoverflow.com/questions/20302186
复制相似问题