求PHP分词搜索按匹配数量排序方法

miencun 2015-06-09 04:39:09
首先,分词功能已做好。

比如搜索“高级PHP教程”,能提取“高级 PHP 教程”

现在要做的就是按匹配数量来排序。同时含有所有词的内容排第一、含有两个词的排第二,只有一个词的排最后

求问大神这个功能怎么实现?
...全文
301 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikaimenba 2016-02-15
  • 打赏
  • 举报
回复
你解决了吗,我现在也想这样弄啊,求解
miencun 2015-06-10
  • 打赏
  • 举报
回复
看来分词搜索真的是个坑啊 真心感谢两位版主的热心解答
傲雪星枫 2015-06-09
  • 打赏
  • 举报
回复
你这种情况应该使用全文索引的。 可以考虑Coreseek + Sphinx 参考:http://www.cnblogs.com/yjf512/p/3581869.html
xuzuning 2015-06-09
  • 打赏
  • 举报
回复
哦,漏了 where 自己补上吧,反正毫无实际意义
miencun 2015-06-09
  • 打赏
  • 举报
回复
没有where的?似乎还是不行,不过先谢谢版本了。
xuzuning 2015-06-09
  • 打赏
  • 举报
回复
你怎么没有表述清楚呢?只是你没有感觉到其中的厉害
以你的例子,查询指令要写作
select title, word, count(*) as cnt 
from (
select title, '高级' as word from tbl_name title like '%高级%'
union all
select title, 'PHP' as word from tbl_name title like '%PHP%'
union all
select title, '教程' as word from tbl_name title like '%教程%'
) T
order by count(*) desc
miencun 2015-06-09
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
如果不使用 全文检索 的话,你的要求虽可实现,但效率极低(联合查询) 但是 mysql 的 全文检索 又不支持中文,这就需要安装第三方软件 通常安装第三方软件是需要付出些代价的 另一解决方案是预先将分词后的文章以十六进制内码方式存入数据库,在使用 mysql 的全文检索 但这需要多出至少一倍的存储空间 自己抉择吧
版主大哥,可能我没有表述清楚。 打个比方,有三个文章标题是这样的: 1、教程下载 2、高级PHP教程下载 3、PHP教程下载 我用关键词搜索:“高级PHP教程”,三个文章标题都要能出来, 排序要像下面这样: 1、高级PHP教程下载《匹配到三个关键词》 2、PHP教程下载《匹配到两个关键词》 3、教程下载《匹配到一个关键词》 求实现思路和方法
xuzuning 2015-06-09
  • 打赏
  • 举报
回复
如果不使用 全文检索 的话,你的要求虽可实现,但效率极低(联合查询) 但是 mysql 的 全文检索 又不支持中文,这就需要安装第三方软件 通常安装第三方软件是需要付出些代价的 另一解决方案是预先将分词后的文章以十六进制内码方式存入数据库,在使用 mysql 的全文检索 但这需要多出至少一倍的存储空间 自己抉择吧

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧