| 您的当前位置:首页 --> MYSQL教程 --> 基于mysql全文索引的深入理解 |
| MYSQL教程 基于mysql全文索引的深入理解 |
| 浏览次数:1352 关键词 ( ) |
| 查看使用该CPU的产品 查看CPU天梯 |
| CPU型号:基于mysql全文索引的深入理解 |
| 主频:Ghz |
| 睿频:Ghz |
| 核心数:个 |
| 不支持超核心 |
| 制作工艺: |
| 插槽类型: |
| 功耗:0W |
| L3缓存:0MB |
| 支持最大内存: 0GB |
| CPU详细参数 |
|
前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24。
复制代码 代码如下: SHOW VARIABLES 查看ft_min_word_len是否设置成功,如果没设置成功请确保 1.确认my.ini正确配置,注意不要搞错my.ini的位置 2.确认mysql已经重启,实在不行重启电脑 其他相关配置请自行百度。 注:重新设置配置后,已经设置的索引需要重新设置生成索引 四、SQL语法 首先生成temp表 CREATE TABLE IF NOT EXISTS `temp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `char` char(50) NOT NULL, `varchar` varchar(50) NOT NULL, `text` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `char` (`char`), FULLTEXT KEY `varchar` (`varchar`), FULLTEXT KEY `text` (`text`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; INSERT INTO `temp` (`id`, `char`, `varchar`, `text`) VALUES (1, 'a bc 我 知道 1 23', 'a bc 我 知道 1 23', 'a bc 我 知道 1 23'); 搜索`char`字段 'a' 值
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('a')
但是你会发现查询无结果?!
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('a' IN BOOLEAN MODE)
这样就可以查询出结果了,但是我们不推荐使用。 INSERT INTO `temp` ( `id` , `char` , `varchar` , `text` ) VALUES ( NULL , '7', '7', '7' ), ( NULL , '7', '7', '7' ), ( NULL , 'a,bc,我,知道,1,23', 'a,bc,我,知道,1,23', 'a,bc,我,知道,1,23' ), ( NULL , 'x', 'x', 'x' ); 这时你执行以下SQL语句都可以查询到数据
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('a');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('bc');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('我');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('知道');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('1');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('23');
以下SQL搜索不到数据
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('b');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('c');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('知');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('道');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('2');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('3');
如果搜索多个词,请用空格或者逗号隔开
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('a x');
SELECT * FROM `temp` WHERE MATCH(`char`) AGAINST ('a,x');
上面的SQL都可以查询到三条数据 $str="测试中文分词"; $so = scws_new(); $so->send_text($str); $temp=$so->get_result(); $so->close(); var_dump($temp); 如果安装未成功,请参照官方说明文档 |
| 下一个产品 SQL计算timestamp的差值的方法 上一个产品 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较 |