求教mysql查询时用到的matchagainst函数问题

2022-07-28 科技 49阅读
  表的类型必须是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);
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com