请问:php+mysql如何实现全文搜索? select * from table where (binary ucase(field1) like ucase('%".$_POST['keywords']."%')) or (binary ucase(field2) like ucase('%".$_POST['keywords']."%'))" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 全文搜索fulltext首先需要建立fulltext索引,然后在查询中使用matach(title,content) against('key')这样的方式。传统意义上的like '%key%'连普通索引都不会用到,更不用说是使用fulltext了。 最好的当然是使用数据库提供的全文检索功能,但目前mysql的全文检索功能对中文无效。所以只好使用其他的办法来实现,速度当然是要慢点的。使用like时由于不能利用索引,自然是最慢的。肯定是不能用的了比较常见的是采用分词法。将文章按2-3个字一组拆开,连同id保存到“分词”表中,检索时拆开待查文字在该表中查询。由于可利用索引,所以还是比较快的。当按两个字一组拆分时同一文章的的尺寸将增加一倍,加上做为指示来源的id体积是很可观的。这是他的一个缺点,不过数据库的“全文检索”索引也是要维持一个庞大的指针集的。用空间来换时间,也是不得已而为之如果剔除分词表中不可能成为词组的字组合,还是可以使体积减小很多的。 我目前的做法是:还是使用like,但是增加query_cache,效率提高很多,比不使用query_cache速度提高很多。 TO xuzuning(唠叨): 分词一般都是两个字一分的~ 但是如果要搜索三个字组成的词怎么办呢? 如果要准确搜索一句话怎么办呢?`````` 设置为全文索引的字段1)不支持中文;2)只支持myisam;如果只是E文的话,采用全文索引比采用like的方式快;采用query_cache,则需要设置query_cache_size="大小" PHP不好做全文的搜索~~~~~~~~~~~~~~~~! 现在使用lucene的还多么,请介绍一下。好像lucene早已经不更新了。 织梦CMS好像有一个这种东东,其实关键字里分割和数据库索引相比,那种占用资源是微不足道的 PHP问题求解 获取不到文件域值 按站点存放日志,在线等 求sql语句 csdn 复制的代码 全部是全角空格 程序报错!! 我在安装PHP中出现的问题 mysql数据库与word,excel这些数据如何进行交换,请提供资料,散分 附件问题! 为什么我顶一的函数没有执行?请大家帮忙! 為什么我的mail()功能用不了? PHP中上传进度条的实现和缩略图的自动生成 请教个正则的问题
所以只好使用其他的办法来实现,速度当然是要慢点的。使用like时由于不能利用索引,自然是最慢的。肯定是不能用的了比较常见的是采用分词法。
将文章按2-3个字一组拆开,连同id保存到“分词”表中,检索时拆开待查文字在该表中查询。由于可利用索引,所以还是比较快的。
当按两个字一组拆分时同一文章的的尺寸将增加一倍,加上做为指示来源的id体积是很可观的。这是他的一个缺点,不过数据库的“全文检索”索引也是要维持一个庞大的指针集的。
用空间来换时间,也是不得已而为之
如果剔除分词表中不可能成为词组的字组合,还是可以使体积减小很多的。
分词一般都是两个字一分的~ 但是如果要搜索三个字组成的词怎么办呢? 如果要准确搜索一句话怎么办呢?``````
采用query_cache,则需要设置query_cache_size="大小"