文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>mysql中使用全文索引f ulltext

mysql中使用全文索引f ulltext

时间:2009-04-10  来源:sss0213

全文检索在 MySQL 中就是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE  时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据 装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将 数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。
1.使用Mysql全文检索fulltext的先决条件
     表的类型必须是MyISAM
    建立全文检索的字段类型必须是char,varchar,text
 
2.建立全文检索先期配置
   由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.
   *Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'
   在 [mysqld] 位置内加入:  
        ft_min_word_len     = 2 
   其它属性还有
        ft_wordlist_charset = gbk 
        ft_wordlist_file    = /home/soft/mysql/share/mysql/wordlist-gbk.txt 
        ft_stopword_file    = /home/soft/mysql/share/mysql/stopwords-gbk.txt 
 稍微解释一下: 
        ft_wordlist_charset 表示词典的字符集, 目前支持良好的有(UTF-8, gbk, gb2312, big5) 
        ft_wordlist_file    是词表文件, 每行包括一个词及其词频(用若干制表符或空格分开,消岐专用) 
        ft_stopword_file    表示过滤掉不索引的词表, 一行一个. 
        ft_min_word_len     加入索引的词的最小长度, 缺省是 4, 为了支持中文单字故改为 2 
 
3.建立全文检索
    在建表中用FullText关键字标识字段,已存在的表用 ALTER TABLE (或 CREATE INDEX) 创建索引
    CREATE fulltext INDEX index_name ON table_name(colum_name);
    
4.使用全文检索
     在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.
    SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);
 
5.详细的说明请参数Mysql官方网站
    http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search
    这是Mysql 5.1的,不过4.X也可以做为参考,基本一置.我用的就是Mysql 4.1.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载