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索引说明相关推荐

  1. mysql创建fulltext索引,MYSQL的FULLTEXT索引功能

    下文转自某些手册,你可以用这个语句来创建FULLTEXT类型的索引: CREATE FULLTEXT INDEX INDX_TEXT ON ARTICLE (TITLE,NOTE); 到 3.23.2 ...

  2. mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接

    在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...

  3. mysql myisam表加索引_MyISAM和InnoDB的索引实现

    在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引.我们主要分析B-Tree 索引. B-Tree 索引是 MyS ...

  4. 【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用

    mysql四种索引PRIMARY(主键索引).INDEX(一般索引).UNIQUE(非空索引).FULLTEXT(全文索引)应用 目录 1)PRIMARY: 2)NORMAL: 3)UNIQUE: 4 ...

  5. mysql btree fulltext_Mysql主要索引方式:FULLTEXT,HASH,BTREE,RTREE。

    使用方式 CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL ...

  6. mysql index fulltext btree_MySQL btree索引与hash索引区别

    在mysql中,大多数索引(如 primary key,unique,index和fulltext)都是在btree中存储,但使用memory引擎可以选择btree索引或者hash索引,两种不同类型的 ...

  7. mysql fulltext like_MySQL全文索引 FULLTEXT索引和like的区别

    1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAIN ...

  8. mysql 索引 fulltext,MySQL FULLTEXT索引问题

    I'm trying to create a FULLTEXT index on an attribute of a table. Mysql returns ERROR 1214: The used ...

  9. 撩课mysql_撩课-Mysql第20部分索引

    什么是索引 索引用于快速找出 在某个列中有一特定值的行, 不使用索引, MySQL必须从第一条记录开始 读完整个表, 直到找出相关的行, 表越大, 查询数据所花费的时间就越多, 如果表中查询的列有一个 ...

最新文章

  1. 神经学家探寻:机器如何拥有意识!如何避免机器人伤害我们!
  2. 谷歌AI智商达苹果Siri两倍 但不及6岁儿童
  3. iOS UIWebView 访问https 绕过证书验证的方法
  4. 淘宝API商家自用型应用程序全部源代码和详细的帮助文档(1元有偿提供)
  5. 重温强化学习之马尔可夫决策过程(MDPs)
  6. 类模板 - C++快速入门45
  7. 提升孩子的智力从用对方法做起
  8. struts2登录注册示例_Struts2资源包和本地化示例
  9. 关于BinaryFormatter
  10. 2008下mysql补丁_windows Server 2008 R2安装Mysql 8的打补丁顺序
  11. 【中医学】9 方剂-4
  12. SPL:self-paced learning 自步学习
  13. 计算机硬盘损坏 数据如何修复,如何修复计算机硬盘错误?如何从硬盘数据损坏中恢复数据?...
  14. 学习笔记 | SMART原则:制定目标
  15. Java 中 switch 的用法
  16. APP开发流程实例讲解-儒释道网络电台八天开发全程-百度云深度兼容测试并进一步优化排错
  17. LabVIEW入门第六天(布尔控件及布尔量)
  18. python 制作电子相册 视频,如何将多张图片制作成电子相册呢
  19. Varint+ZigZag编码和解码
  20. 自己搭建的IC618开发环境

热门文章

  1. linux top 刷新速度,Linux Top命令使用方法
  2. java jcf查看_java 集合框架  JCF
  3. 深度优先搜索python
  4. android actionbar分割线,Android ActionBar和ToolBar的使用
  5. CentOS7防火墙firewalld开放指定端口
  6. Easyx小游戏制作教程
  7. 又见李鬼:来自“德国”的雷柏rapoo??
  8. @Produces注解
  9. Java SE day18_IO流4
  10. mysql 查所有的用户_MySQL查看所有用户 - MySQL 系列教程