站长论坛

标题: 在mysql中使用全文索引fulltext|mysql,全文索引,fulltext [打印本页]

作者: superadmin    时间: 2008-3-20 18:45
标题: 在mysql中使用全文索引fulltext|mysql,全文索引,fulltext
全文检索在 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/ ... tml#fulltext-search
    这是Mysql 5.1的,不过4.X也可以做为参考,基本一置.我用的就是Mysql 4.1.
来源: 站长吧 - http://www.master8.net/data/2007/0718/article_10409.htm




欢迎光临 站长论坛 (http://tzlink.com/bbs/) Powered by Discuz! X3.2