PHP搜索MYSQL使用like '%$a%'语句,查询的结果是某条记录包含$a字符串的记录,并不是模糊匹配。
比如查询“古镇漫步”,数据库中有一条记录是“古镇·漫步”,就无法被查到。
这个问题有简单有效的解决方案吗?
PHP搜索MYSQL使用like '%$a%'语句,查询的结果是某条记录包含$a字符串的记录,并不是模糊匹配。
比如查询“古镇漫步”,数据库中有一条记录是“古镇·漫步”,就无法被查到。
这个问题有简单有效的解决方案吗?
之前做过简单说一下。PHP+MySQL+Sphinx
的组合对于网站搜索来说也还是可以的。
中文分词使用coreseek
和Sphinx
一样的
coreseek
安装使用的具体步骤可以按照官网来进行
coreseek
一直要发布、发布新版本都快到2018年了还没发。。。
貌似现在coreseek.cn
打不开了,看一下其它人员的技术博客吧
"%古镇漫步%"匹配的是以"古镇漫步"为连续字符的内容当然找不到"古镇·漫步"
可以使用字符串函数、正则函数来匹配查找。
不过业务上一般规避使用mysql自带的函数,最好是mysql简单查询,再用php来代替处理业务逻辑需要的数据。
mysql的模糊查询最好少用,如果后台使用的话是可以的,真要面向大量用户了,建议还是做个专业的查询吧
如sphinx,elasticSearch(elasticSearch难度与逼格相对较高,谨慎入手)
你那个mysql的模糊查询的问题大家已经指正了就不啰嗦了
如果要搜索的记录数很多建议使用sphinx或者xunsearch或者elasticSearch。我的博客有sphinx安装文章。
如果记录数少,可以采用比如要搜索ABCD
,将其拆解成'SELECT * FROM A_TABLE WHERE FILED LIKE '%A%' AND FILED LIKE '%B%' AND FILED LIKE '%C%' AND FILED LIKE '%D%'
。
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
like '%$a%',表示要查询$a前后匹配任意字符的,比如查询“古镇漫步”可以查出来“我们在古镇漫步”,也可以查出来“我们在古镇漫步了一个小时”
而“古镇·漫步”是跟你要查询的字符串顺序显然不符合。