mysql 索引 full_Mysql FULLTEXT索引说明
Mysql
支持全文检索和搜索功能。mysql中的全文索引类型fulltext的索引。fulltext索引仅可用与MYISAM表;他们可以从char、verchar或text列中作为create
table语句的一部分被创建,或者随后使用alter table 或 create
index被添加。对于较大的数据集,将你的资料输入一个没有fulltext索引的表中,然后创建索引,其速度比把资料输入现有的fulltext索引的速度更快。
FULL TEXT索引 Mysql 3.23.23以及更高版本支持一种特殊类型的索引
全文索引在 MySQL 中是一个 全文索引在 MySQL
中是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表(且仅支持该类型的表),可以在 CREATE
TABLE 时或之后使用 ALTER
TABLE 或 CREATE
INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有FULLTEXT 索引的表中,然后再使用 ALTER
TABLE (或 CREATE
INDEX)
创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。
全文搜索通过 MATCH() 函数完成。
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles VALUES
-> (NULL,'MySQL Tutorial', 'DBMS stands for DataBase ...'),
-> (NULL,'How To Use MySQL Efficiently', 'After you went through a ...'),
-> (NULL,'Optimising MySQL','In this tutorial we will show ...'),
-> (NULL,'1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
-> (NULL,'MySQL vs. YourSQL', 'In the following database comparison ...'),
-> (NULL,'MySQL Security', 'When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
函数 MATCH() 对照一个文本集(包含在一个 FULLTEXT 索引中的一个或多个列的列集)执行一个自然语言搜索一个字符串。搜索字符串做为 AGAINST() 的参数被给定。搜索以忽略字母大小写的方式执行。对于表中的每个记录行,MATCH() 返回一个相关性值。即,在搜索字符串与记录行在 MATCH() 列表中指定的列的文本之间的相似性尺度。
如果即没有 WHERE 也没有 ORDER BY 子句,返回行是不排序的。
下一个示例显示如何检索一个明确的相似性值
mysql> SELECT id,MATCH (title,body) AGAINST ('Tutorial') FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
| 1 | 0.64840710366884 |
| 2 | 0 |
| 3 | 0.66266459031789 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)
到 4.0.1 时,MySQL 也可以使用 IN BOOLEAN MODE 修饰语来执行一个逻辑全文搜索。
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+------------------------------+-------------------------------------+
| id | title | body |
+----+------------------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Efficiently | After you went through a ... |
| 3 | Optimising MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+------------------------------+-------------------------------------+
这个查询返回所有包含词 MySQL 的记录行(注意: 50% 的阈值没有使用),但是它没有包含词 YourSQL。注意,一个逻辑模式的搜索不会自动地以相似值的降序排序记录行。你可以从上面的结果出看得出来,最高的相似值(包含 MySQL 两次的那个) 最列在最后,而不是第一位。一个逻辑全文搜索即使在没有一个 FULLTEXT 索引的情况下也可以工作,然而它 慢 些。
逻辑全文搜索支持下面的操作符:
+
一个领头的加号表示,该词必须出现在每个返回的记录行中。
-
一个领头的减号表示,该词必须不出现在每个返回的记录行中。
缺省的
(当既没有加号也没有负号被指定时)词是随意的,但是包含它的记录行将被排列地更高一点。这个模仿没有 IN BOOLEAN MODE 修饰词的 MATCH() ... AGAINST() 的行为。
<
>
这两个操作符用于改变一个词的相似性值的基值。< 操作符减少基值,> 操作符则增加它。参看下面的示例。
(
)
圆括号用于对子表达式中的词分组。
~
一个领头的否定号的作用象一个否定操作符,引起行相似性的词的基值为负的。它对标记一个噪声词很有用。一个包含这样的词的记录将被排列得低一点,但是不会被完全的排除,因为这样可以使用
- 操作符。
*
一个星号是截断操作符。不想其它的操作符,它应该被追加到一个词后,不加在前面。
"
短语,被包围在双引号"中,只匹配包含这个短语(字面上的,就好像被键入的)的记录行。
这里是一些示例:
apple
banana
找至少包含上面词中的一个的记录行
+apple
+juice
... 两个词均在被包含
+apple
macintosh
... 包含词 “apple”,但是如果同时包含
“macintosh”,它的排列将更高一些
+apple
-macintosh
... 包含 “apple” 但不包含
“macintosh”
+apple
+(>pie
... 包含 “apple” 和 “pie”,或者包含的是 “apple” 和
“strudel” (以任何次序),但是 “apple pie” 排列得比 “apple strudel”
要高一点
apple*
... 包含 “apple”,“apples”,“applesauce” 和
“applet”
"some
words"
... 可以包含 “some words of wisdom”,但不是 “some
noise words”
mysql 索引 full_Mysql FULLTEXT索引说明相关推荐
- mysql创建fulltext索引,MYSQL的FULLTEXT索引功能
下文转自某些手册,你可以用这个语句来创建FULLTEXT类型的索引: CREATE FULLTEXT INDEX INDX_TEXT ON ARTICLE (TITLE,NOTE); 到 3.23.2 ...
- mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接
在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...
- mysql myisam表加索引_MyISAM和InnoDB的索引实现
在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引.我们主要分析B-Tree 索引. B-Tree 索引是 MyS ...
- 【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用
mysql四种索引PRIMARY(主键索引).INDEX(一般索引).UNIQUE(非空索引).FULLTEXT(全文索引)应用 目录 1)PRIMARY: 2)NORMAL: 3)UNIQUE: 4 ...
- mysql btree fulltext_Mysql主要索引方式:FULLTEXT,HASH,BTREE,RTREE。
使用方式 CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL ...
- mysql index fulltext btree_MySQL btree索引与hash索引区别
在mysql中,大多数索引(如 primary key,unique,index和fulltext)都是在btree中存储,但使用memory引擎可以选择btree索引或者hash索引,两种不同类型的 ...
- mysql fulltext like_MySQL全文索引 FULLTEXT索引和like的区别
1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAIN ...
- mysql 索引 fulltext,MySQL FULLTEXT索引问题
I'm trying to create a FULLTEXT index on an attribute of a table. Mysql returns ERROR 1214: The used ...
- 撩课mysql_撩课-Mysql第20部分索引
什么是索引 索引用于快速找出 在某个列中有一特定值的行, 不使用索引, MySQL必须从第一条记录开始 读完整个表, 直到找出相关的行, 表越大, 查询数据所花费的时间就越多, 如果表中查询的列有一个 ...
最新文章
- 神经学家探寻:机器如何拥有意识!如何避免机器人伤害我们!
- 谷歌AI智商达苹果Siri两倍 但不及6岁儿童
- iOS UIWebView 访问https 绕过证书验证的方法
- 淘宝API商家自用型应用程序全部源代码和详细的帮助文档(1元有偿提供)
- 重温强化学习之马尔可夫决策过程(MDPs)
- 类模板 - C++快速入门45
- 提升孩子的智力从用对方法做起
- struts2登录注册示例_Struts2资源包和本地化示例
- 关于BinaryFormatter
- 2008下mysql补丁_windows Server 2008 R2安装Mysql 8的打补丁顺序
- 【中医学】9 方剂-4
- SPL:self-paced learning 自步学习
- 计算机硬盘损坏 数据如何修复,如何修复计算机硬盘错误?如何从硬盘数据损坏中恢复数据?...
- 学习笔记 | SMART原则:制定目标
- Java 中 switch 的用法
- APP开发流程实例讲解-儒释道网络电台八天开发全程-百度云深度兼容测试并进一步优化排错
- LabVIEW入门第六天(布尔控件及布尔量)
- python 制作电子相册 视频,如何将多张图片制作成电子相册呢
- Varint+ZigZag编码和解码
- 自己搭建的IC618开发环境
热门文章
- linux top 刷新速度,Linux Top命令使用方法
- java jcf查看_java 集合框架 JCF
- 深度优先搜索python
- android actionbar分割线,Android ActionBar和ToolBar的使用
- CentOS7防火墙firewalld开放指定端口
- Easyx小游戏制作教程
- 又见李鬼:来自“德国”的雷柏rapoo??
- @Produces注解
- Java SE day18_IO流4
- mysql 查所有的用户_MySQL查看所有用户 - MySQL 系列教程