首页 > 解决方案 > 通过 soundex() 和部分名称同时搜索名称 mysql

问题描述

我有一个电影数据库,用户可以在其中按名称搜索记录。有时用户拼错了电影名称,我应该像 YouTube 一样为他获取记录。同时,如果用户写了电影名称的一部分,我应该得到多条记录。

例如,如果用户正在寻找电影 Saving private Ryan 但写错了名称 Saving privat Ryan 我应该为他获取记录。但是如果用户写的是私人的,在这种情况下,我应该检索所有包含私人一词的记录。

我尝试了 Soundex,它可以很好地处理拼写错误的名称

select * from movie where title soundex('Saving privat Ryan')

我使用的部分名称喜欢

select * from movie where title like '%private%'

是否可以用一句话进行搜索?

谢谢

标签: mysql

解决方案


是的,只需在条件后面加上 OR:

select * from movie where title soundex('Saving privat Ryan') OR title like '%private%'

我还建议使用Lower函数使查询不区分大小写:

select * from movie where title soundex('Saving privat Ryan') OR lower(title) like lower('%private%')

推荐阅读