1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

MySQL如何创建全文索引

我是本际云服务器推荐网的小编小本本,今天给大家介绍MySQL全文索引以及自然语言全文搜索的操作演示。

MySQL如何创建全文索引

一、MySQL全文索引介绍

MySQL全文索引只能用于InnoDB或MyISAM表,并且只能用于CHAR、VARCHAR或TEXT列。全文索引分为三种:自然语言全文搜索、布尔全文搜索和具有查询扩展的全文搜索。虽然MySQL提供了一个内置的全文ngram解析器,支持中文、日语和韩语(CJK),以及一个可安装的日语MeCab全文解析器插件(5.7新增),但在业务生产环境中,不建议使用MySQL进行文本检索类业务的开发。

针对大数据检索场景,建议使用更加专业的Elasticsearch技术栈解决方案。MySQL的全文索引是FULLTEXT类型的索引。FULLTEXT索引定义可以在创建表时在CREATETABLE语句中给出,或者稍后使用ALTERTABLE或CREATEindex添加。对于大型数据集,将数据加载到没有FULLTEXT索引的表中,然后再创建索引,要比将数据加载到已有FULLTEXT索引的表中快得多。官网介绍:MySQL5.7   MySQL5.6

二、操作演示之自然语言全文搜索

2.1准备表结构:

 mysql > create database starcto;
 mysql > use starcto;
 CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT (title,body)
) ENGINE=InnoDB;

2.2插入测试数据:

 INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial, we show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');

2.3查询测试:

 SELECT * FROM articles
    -> WHERE MATCH (title,body)
    -> AGAINST ('database' IN NATURAL LANGUAGE MODE);

2.4查询相关度算分:

 SELECT id, body, MATCH (title,body)
    -> AGAINST ('Security implications of running MySQL as root'
    -> IN NATURAL LANGUAGE MODE) AS score
    -> FROM articles
    -> WHERE MATCH (title,body) 
    -> AGAINST('Security implications of running MySQL as root'
    -> IN NATURAL LANGUAGE MODE);

注:搜索的相关性算分,描述了一个文档和查询语句匹配的程度。打分的本质是排序,需要把最符合用户需求的文档排在前面。Elasticsearch在搜索相关性算分方面非常强大。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7330.html