mysql的match全文检索

举报
花街路人 发表于 2022/03/03 14:39:05 2022/03/03
【摘要】 1.使用Mysql全文检索fulltext的先决条件    表的类型必须是MyISAM建立全文检索的字段类型必须是char,varchar,text2.建立全文检索先期配置由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.*Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'在...


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 (tests) AGAINST ('哈哈' IN BOOLEAN MODE);

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。