mysql - 通过 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%'
是否可以用一句话进行搜索?
谢谢
解决方案
是的,只需在条件后面加上 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%')
推荐阅读
- java - JAVA - 具有特殊字符的 LDAP 密码不起作用
- json - 将 aws cli dynamodb json 响应转换为常规 json
- php - 使用 /start 命令通过 PHP 引用 Telegram bot
- android - OnItemSelectedListener Spinner 重新创建循环 - Android
- python-3.x - None 作为我的代码的输出。我想要我的代码的计算输出。在 if else 之后使用逻辑语句是错误的吗?
- biopython - 如何从包含基于 ID 的多个基因组序列的 Genbank 文件中删除无效序列
- c# - 如何在 TextBox 中禁用通过鼠标按下移动选定的文本?
- javascript - 如何在不使用剪贴板的情况下从网站复制原始文本
- geometry - 用螺旋形曲线覆盖任何表面
- c# - 功能“OnApplicationPause”在应用程序启动时起作用。安卓,unity3d