> 백엔드 개발 > PHP 튜토리얼 > 做搜索查询的时候 怎么拆分词?

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

WBOY
풀어 주다: 2016-06-23 13:40:57
원래의
1362명이 탐색했습니다.

比如说 
商品标题
字段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 排序反而速度更慢 不明白

学习了学习了 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿