mysql5.7全文索引(用MySQL全文索引给FeedDB打造一个搜索引擎)
用MySQL全文索引给FeedDB打造一个搜索引擎
效果图 ,欢迎测试http://feed.readself.com/
samhjn同学在上一篇文章评论中表示Feed Database的搜索功能不好使 。原因是之前我没有太注重搜索上的优化 ,所以这个功能的体验很差 。例如输入 “xiaoxia ” 结果搜出一大堆 “xiaoxiao ” 的网站 ,排名还比我的博客靠前 ,挺失望的!不过 ,今天的工作就是把这个功能给完善了!现在已经不是之前那个单纯在MySQL里使用like %keyword%查找那么简陋了。而且搜索速度也大大提升 ,不再像之前那样慢 。
只要你输入关键字“xiaoxia ”进行搜索 ,绝对不会出现“xiaoxiao ”的结果了 ,因为这是两个不同的名字 。
同时 ,你输入的关键词还会被拆分,例如“吸血鬼小说 ”会被拆分成“吸血鬼 ”和“小说 ” 。排序方式为先按匹配词数 ,再按BR值(被友情链接数量)排序 。
提到搜索引擎技术就离不开分词和索引 ,在分词上,我使用的是mmseg的中文分算法和搜狗的词库 ,分词速度快的惊人 。以至于我处理数据的瓶颈在MySQL数据库上 。我使用了MySQL的fulltext索引功能 ,在检索效率上可能没有sphinx那么快,但是对于10万个条目以内的数据库 ,速度已经足够了 。为了达到精确查找的目的 ,我只对网站链接和标题两个属性进行了索引 ,fulltext的索引数据占用的空间也不多 ,才不到10M ,挺环保的 。
对网站标题进行分词之后 ,连同需要建立索引的链接 ,一起搬到了一个叫feed_index的索引表中 。
下面是未分词的一段数据:
分词之后的数据:
目前这个分词效果还是挺满意的。另外 ,在最近看的一本搜索引擎相关的书籍中 ,提到了一种不依赖于词库的分词方法,能够应付一些新生的词汇 ,有空研究一下 。如果两种方法都结合起来 ,应该能够达到更好的效果
夜已深,明天继续研究!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!