首页 >后端开发 >php教程 >做搜索查询的时候 怎么拆分词?

做搜索查询的时候 怎么拆分词?

WBOY
WBOY原创
2016-06-23 13:40:571355浏览

比如说 
商品标题
字段title
秋冬新款大码女装宽松毛衣外套女开衫加厚中长款羊毛
商品评论
字段content
秋冬季室内穿着舒适,出外搭配棉羽背心也时尚应景。A字型裙摆式款型,可以遮挡腰腹赘肉。肩部承重力在织造设计方面值得升级改进。袖笼围度窄瘦,袖长偏短,用料与正身之阔绰相比,显寒碜。由此内里只能搭配无袖或薄型衬衫。本人159cm,135g,103cm胸围,39cm肩宽,35cm臂围,供参考。十分担心缩水率,唯恐宝贝是“一水衣”。 


搜索 大码 羊毛 外套

搜索 大码 羊毛 舒适 款型

这样怎么实现呢 应该是什么样思路呢 我开始想的是取出关键词 一个词一个词的'%'.$wd.'%'?那样也实现不了 几个词同时出现的时候



回复讨论(解决方案)

MySQL 提供了正则表达式检索,为何不用一下呢?

$word = '大码 羊毛 外套';$word = preg_replace('/\s+/', '|' ,trim($word));$sql = "select * from tbl_name where concat(title,content) REGEXP '$word'";

如果条件允许的话,使用第三方的全文检索驱动,效率要高很多

同时包含不好做,因为有出现的次序问题
虽然 大码.*羊毛 是一种途径
但 羊毛.*大码 是否也是可以的呢?

MySQL 的正则比较简陋,象 php 的这种写法是不支持的

$s = '秋冬新款大码女装宽松毛衣外套女开衫加厚中长款羊毛';$p = '/(?=.*羊毛)(?=.*大码).*/';echo preg_match($p, $s); //1 匹配成功


本来是为了简捷,弄复杂了就没意思了

同时包含不好做,因为有出现的次序问题
虽然 大码.*羊毛 是一种途径
但 羊毛.*大码 是否也是可以的呢?

MySQL 的正则比较简陋,象 php 的这种写法是不支持的

$s = '秋冬新款大码女装宽松毛衣外套女开衫加厚中长款羊毛';$p = '/(?=.*羊毛)(?=.*大码).*/';echo preg_match($p, $s); //1 匹配成功


本来是为了简捷,弄复杂了就没意思了



板板 为什么 我加上ID排序后 查询时间就从0.3 飙升到1.8  有办法解决吗

同时包含不好做,因为有出现的次序问题
虽然 大码.*羊毛 是一种途径
但 羊毛.*大码 是否也是可以的呢?

MySQL 的正则比较简陋,象 php 的这种写法是不支持的

$s = '秋冬新款大码女装宽松毛衣外套女开衫加厚中长款羊毛';$p = '/(?=.*羊毛)(?=.*大码).*/';echo preg_match($p, $s); //1 匹配成功


本来是为了简捷,弄复杂了就没意思了



我用时间排序 速度还不错 0.4秒 13条数据 为什么按ID 排序反而速度更慢 不明白

学习了学习了 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn