一个行业网站,要实现的功能要求为:一搜索表单可选搜索 产品/资讯/商家,搜索时希望先搜标题后全文,当前的数据量估计3万多,定位期望在百万级也可用。数据类型为innodb,当前的方法是对关键词进行空格区分,然后用LIKE查找,但这样子效率很差,且查找的结果也不大准确。
不知还有没有其它的方法?期待高人指点。像淘宝不知是用什么方法,它那么大的数据量竟然能这么快且很精准,有人知道吗?

解决方案 »

  1.   

    lucene 中文分词  创建全文索引
      

  2.   

    谢谢.
    忘了说,我是使用PHP+MYSQL的,希望有具体点的说明
      

  3.   

    刚看了DZ的搜索,它似乎就是ACMAIN所说的建多一个表,很麻烦
    不知全文搜索用什么方法呢?innodb似乎并不支持
      

  4.   

    同问。 如何实现高效的php+mysql的全文搜索
      

  5.   

    全文索引目前只对myisam引擎有效哦
      

  6.   

     
    ?? 真的。。 寡闻了。 使用分词是最为好的。。 
    like全文扫描没办法,是否可以有其他where减少命中率。
    select * from (select * from tb1 where a between A1 and A2)t where t.b like '%str%';
      

  7.   

    看来也有不少人存在这样的困惑,难道使用innodb的就没法进行全文索引了吗?
      

  8.   

    今天用like与regexp分别测试了下,regexp效率略高些但不大精确,期待更好的方法
      

  9.   

    您可以使用sphinx mysql engine搜索,速度很快的!http://www.sphinxsearch.com/
      

  10.   

    谢楼上的,刚google了下似乎不错,马上试一下sphinx,但不知能否在windows下使用.
      

  11.   


    都知道全文检索啊,可局限于mysql的限制不得另找方法
      

  12.   

    sphinx 在wamp下真的不好搞,折腾了两天都没成功,头都大了
      

  13.   

    是不是有方法可以优化一下 my.ini或者my.cnf
      

  14.   

    sphinx这里有个指南,windows下sphinx不太适合生产环境(开发可以),末学安装在centos下的,检索的效率很高
    http://www.sphinxsearch.com/wiki/doku.php?id=sphinx_chinese_tutorial
      

  15.   

    看来PHP也就只有这两个方式了,小数据量时直接用like,大数据用sphinx。