php – MySQL一个真正的LIKE语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MySQL一个真正的LIKE语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1246字,纯文字阅读大概需要2分钟。
内容图文
![php – MySQL一个真正的LIKE语句](/upload/InfoBanner/zyjiaocheng/909/b7ac91d241fc42dbbd466c5e570204c5.jpg)
我正在帮朋友为他正在进行的项目建立一个字典.该项目的一部分是创建搜索功能.数据库在MySQL中,后端在php中.
现在,运行我们的简单查询是件小事:
SELECT *,
(
(CASE WHEN word LIKE '%$query%' THEN 1 ELSE 0 END) +
(CASE WHEN defin LIKE '%$query%' THEN 1 ELSE 0 END)
) AS relev
FROM dictionary
WHERE word LIKE '%$q%'
OR defin LIKE '%$q%'
ORDER BY relev DESC;
它产生了良好的效果;例如,输入“火”给了我们火,消防员,救火车,着火等等.但是,我们也想要错误的余地:我们希望错误“prnk”给我们恶作剧,粉红色和粉红色,或者“骡子“也提出”鼹鼠“这个词.
相当令人惊讶的是,我们无法找到任何相关信息.相关系统完全是肤浅的,因为我们不需要实际的相关性(只是一个整体指针),但我们确实需要一些东西(这就是为什么我们选择了LIKE语句而不是MATCH … AGAINST语句,我们发现无处以相关方式排序.)
数据库只包含三件事:id,word,defin.很简单,因为这是所需的复杂性(或简单性).
提前感谢任何人.
解决方法:
尝试测试这个词听起来像是字典中的一个,所以有类似的话:
SELECT *,
(
(CASE WHEN word LIKE '%$query%' THEN 1 ELSE 0 END) +
(CASE WHEN defin LIKE '%$query%' THEN 1 ELSE 0 END) +
(CASE WHEN LEFT(SOUNDEX(word), 4) = LEFT(SOUNDEX('$query'), 4) THEN 1 ELSE 0 END) +
(CASE WHEN LEFT(SOUNDEX(defin), 4) = LEFT(SOUNDEX('$query'), 4) THEN 1 ELSE 0 END)
) AS relev
FROM dictionary
WHERE word LIKE '%$q%'
OR defin LIKE '%$q%'
ORDER BY relev DESC;
内容总结
以上是互联网集市为您收集整理的php – MySQL一个真正的LIKE语句全部内容,希望文章能够帮你解决php – MySQL一个真正的LIKE语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。