IT技术学习网
IT技术学习网
您的位置: 主页 > 数据库技术 > mysql >

mysql全文索引(fulltext index)与全文检索(fulltext search)教程

2014-08-18 14:19 来源: IT技术学习网 阅读:

mysql支持全文索引和全文检索。

1.mysql全文索引(fulltext index)

  • mysql中的全文索引是mysql索引类别中的一种:FULLTEXT索引
  • 全文索引可以只可以在innodb和myisam表中使用(mysql5.6及以上版本开始全面支持全文索引)。只能在char,varchar,text类型的列上使用。
  • 全文索引可以在建表时以CREATE TABLE语句建立,或者建表后使用ALTER TABLE、CREATE INDEX语句建立。
  • 对于需要存储很多数据的表,先将数据放入表中再建全文索引,比将很多数据直接放入已有全文索引的表中要快得多。

2.mysql全文检索(fulltext search)

建立好全文索引以后,就可以使用全文搜索了

全文搜索使用MATCH() ... AGAINST语法:

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

search_modifier可取值为下列之一:
  {
       IN NATURAL LANGUAGE MODE
     | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
     | IN BOOLEAN MODE
     | WITH QUERY EXPANSION
  }

match()以逗号分隔的被搜索列名为参数,against以要搜索的字符串为参数。search_modifier是一个可选的修饰符,来表明进行哪种类型的搜索。在搜索过程中,搜索字符串必须是常量字符串。因此,像表的列这种就不适合做搜索字符串,因为表的每一行列的值都不一样。

mysql有三种类型全文检索:

  • 自然语言检索:按人类语言来解释搜索字符串。没有特别的操作符。自然语言检索有用到停止词列表这一机制。innodb搜索停止词列表由innodb_ft_enable_stopword, innodb_ft_server_stopword_table, and innodb_ft_user_stopword_table三个表控制。myisam检索停止词由ft_stopword_file控制。
  • 布尔值检索:IN BOOLEAN MODE修饰符指定一个布尔搜索。
  • 自然语言扩展检索:跟自然语言检索类似,先做一个检索词的自然语言检索,然后再加该检索词的相关词检索,最后所有的检索结果一起返回。

 

 

mysql全文索引(fulltext index)与全文检索(fulltext search)教程
转载需注明出处:IT技术学习网 http://www.itjsxx.com/mysql/mysql-index-fulltext.html

评论文章 mysql全文索引(fulltext index)与全文检索(fulltext search)教程
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图