select * from table where (binary ucase(field1) like ucase('%".$_POST['keywords']."%')) or (binary ucase(field2) like ucase('%".$_POST['keywords']."%'))"

解决方案 »

  1.   

    全文搜索fulltext首先需要建立fulltext索引,然后在查询中使用matach(title,content) against('key')这样的方式。传统意义上的like '%key%'连普通索引都不会用到,更不用说是使用fulltext了。
      

  2.   

    最好的当然是使用数据库提供的全文检索功能,但目前mysql的全文检索功能对中文无效。
    所以只好使用其他的办法来实现,速度当然是要慢点的。使用like时由于不能利用索引,自然是最慢的。肯定是不能用的了比较常见的是采用分词法。
    将文章按2-3个字一组拆开,连同id保存到“分词”表中,检索时拆开待查文字在该表中查询。由于可利用索引,所以还是比较快的。
    当按两个字一组拆分时同一文章的的尺寸将增加一倍,加上做为指示来源的id体积是很可观的。这是他的一个缺点,不过数据库的“全文检索”索引也是要维持一个庞大的指针集的。
    用空间来换时间,也是不得已而为之
    如果剔除分词表中不可能成为词组的字组合,还是可以使体积减小很多的。
      

  3.   

    我目前的做法是:还是使用like,但是增加query_cache,效率提高很多,比不使用query_cache速度提高很多。
      

  4.   

    TO  xuzuning(唠叨):
     
      分词一般都是两个字一分的~  但是如果要搜索三个字组成的词怎么办呢?  如果要准确搜索一句话怎么办呢?``````
      

  5.   

    设置为全文索引的字段1)不支持中文;2)只支持myisam;如果只是E文的话,采用全文索引比采用like的方式快;
    采用query_cache,则需要设置query_cache_size="大小"
      

  6.   

    PHP不好做全文的搜索~~~~~~~~~~~~~~~~!
      

  7.   

    现在使用lucene的还多么,请介绍一下。好像lucene早已经不更新了。
      

  8.   

    织梦CMS好像有一个这种东东,其实关键字里分割和数据库索引相比,那种占用资源是微不足道的