Loading...

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

如何解决Mysql中文全文索引

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/798.html

Lucene In ActionUPDATE:看到有很多朋友搜索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。有些失望。看来只能通过提升服务器性能来提高效率了。

12 Responses to “如何解决Mysql中文全文索引”


  1. 送你一个我们的搜索产品,不过你要等一阵子,我们正在做产品化的工作

  2. wow
    谢了,tiny :)

  3. phpcms通过加入文章的时候截取前200字作为索引。
    这样是不是比直接的全文索引更有用而且效率更高?

  4. 恩 其实内容少的话 前1000字都没问题
    我现在的问题是不用搜索文章,只搜索标题都很费时
    现在有将近30W条数据啊

  5. 老大,30w都是海量啊

  6. 呵呵 确实,30W的数据算不上多。但是DH的数据库速度实在是慢得可以啊。
    而且图书的数据是30W,Tag的数据升了一个数量级。

  7. 7ben

    mysql没有全文索引,其他很多数据库都有啊!

  8. 嗯 中文的全文索引,很难依靠数据库解决

  9. 9hite

    2W我都见吃力.并发大的时候MYSQLD一下用去60%到70%的CPU

  10. 10Jason

    用Lucene就可以解决了。
    我测试的30W数据,在我的破本本上测试全文索引查询速度是0.5秒以内:)

  11. @Jason
    是的,必须用全文检索的引擎。不过我用了sphinx,似乎要更快

  12. 我目前正在开发的项目2000W 的数据量, 索引用的sphinx ,key-value 用的TTServer

Leave a Reply