如何解决Mysql中文全文索引
原文地址:http://www.blogkid.net/archives/798.html
UPDATE:看到有很多朋友搜索mysql中文的全文索引到了这里,想和大家说,用mysql进行中文的全文索引是很难的。我已经找到了用Lucene解决的办法,不过在实际应用中选择了另一个全文检索工具“Sphinx”,我也写了一篇关于Sphinx和Rails协作的文章。请看看下面显示的相关文章里和Lucene有关的内容。左边推荐的这本书是一个详细的关于Lucene的教程。
V2Read是我第一个需要处理海量数据的Project,主要的数据是大量的图书信息。但是对于正在飞速增加的数据,我有点束手无策。现在在V2Read的搜索是使用Like进行简单的匹配,不用说,效率很差。所以现在的搜索只搜书名都很慢。
我下午花了一些时间来找Mysql在中文全文索引方面的内容,可是没找到什么有帮助的。大家提供的近似于Hack的方式倒是满有意思。比如说先进行分词,然后在中间插入空格,搜索的时候就能搜出来了;比如说先把内容转化成拼音(汗一个先),然后存进数据库——实在让我感叹群众的智慧就是伟大啊。
不过搜来搜去还是没有解决这个问题。全文索引难道真的就这么难?不知道Livid的V2EX是怎么做的。想到这里,突然有了去翻Babel程序的冲动,顺便也可以看看PW的源程序,肯定能找到蛛丝马迹的。
今天和zhanghe4聊天,说起V2Read。去年这个时候我在设计店评的时候,他给我看了dianping.com的个人主页,说最好提供这样一个东西。那时的我虽有满腔热情,到底没啥水平,看着那个伪静态的地址,猜测着那边高深莫测的技术,心里没底。但今天的V2Read全部都是伪静态链接,以前觉得那么NB的东西现在也看着稀松平常。很多时候自己都没有察觉,实际上成长了很多。
我正在做一个PPT,为我们新的沙龙做准备。但是在谈问题的深度上,实在不知道该怎么把握。深入到技术的细节,有一大堆内容,退到整体的设计,好像内容也不少,hoho。
不过这个中文全文索引实在是让人发愁啊。
UPDATE: 我去查了PW的程序(“search.php”) 以及Babel的程序,发现它们所使用的全是Like。有些失望。看来只能通过提升服务器性能来提高效率了。


送你一个我们的搜索产品,不过你要等一阵子,我们正在做产品化的工作
wow
谢了,tiny
phpcms通过加入文章的时候截取前200字作为索引。
这样是不是比直接的全文索引更有用而且效率更高?
恩 其实内容少的话 前1000字都没问题
我现在的问题是不用搜索文章,只搜索标题都很费时
现在有将近30W条数据啊
老大,30w都是海量啊
呵呵 确实,30W的数据算不上多。但是DH的数据库速度实在是慢得可以啊。
而且图书的数据是30W,Tag的数据升了一个数量级。
mysql没有全文索引,其他很多数据库都有啊!
嗯 中文的全文索引,很难依靠数据库解决
2W我都见吃力.并发大的时候MYSQLD一下用去60%到70%的CPU
用Lucene就可以解决了。
我测试的30W数据,在我的破本本上测试全文索引查询速度是0.5秒以内:)
@Jason
是的,必须用全文检索的引擎。不过我用了sphinx,似乎要更快
我目前正在开发的项目2000W 的数据量, 索引用的sphinx ,key-value 用的TTServer