软件安装:装机软件必备包

本站电脑知识提供电脑入门知识,计算机基础知识,计算机网络应用基础知识,电脑配置知识,电脑故障排除和电脑常识大全,帮助您更好的学习电脑!不为别的,只因有共同的爱好,为中国互联网发展出一分力!

软件等级:

更新时间:2016-11-11

版本号:v5.7.10

MySQL:详解MySQL全文检索教程

Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失 。。。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。

Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。。。。

1. MySQL 4.x版本及以上版本提供了全文检索支持,但是表的存储引擎类型必须为MyISAM,以下是建表SQL,注意其中显式设置了存储引擎类型

CREATE TABLE articles (

id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

title VARCHAR(200),

body TEXT,

FULLTEXT (title,body)

) ENGINE=MyISAM DEFAULT CHARSET=utf8; 其中FULLTEXT(title, body) 给title和body这两列建立全文索引,之后检索的时候注意必须同时指定这两列。

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 will 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 ...');

3. 全文检索测试

SELECT * FROM articles

WHERE MATCH (title,body) AGAINST ('database'); 检索结果如下:

5 MySQL vs. YourSQL In the following database comparison ...1 MySQL Tutorial DBMS stands for DataBase ... 说明全文匹配时忽略大小写。

4. 可能遇到的困扰

到目前为止都很顺利,但是如果检索SQL改为下面会怎样呢?

SELECT * FROM articles

WHERE MATCH (title,body) AGAINST ('well'); 结果让人大跌眼镜,开始我也困惑了许久,后来去网上查了下才知道原来是这么回事:

mysql指定了最小字符长度,默认是4,必须要匹配大于4的才会有返回结果,可以用SHOW VARIABLES LIKE 'ft_min_word_len' 来查看指定的字符长度,也可以在mysql配置文件my.ini 更改最小字符长度,方法是在my.ini 增加一行 比如:ft_min_word_len = 2,改完后重启mysql即可。 所以上面不能返回结果。但是我用上面的方法改配置文件后,再用show命令查看,并没有改变。

另外,MySQL还会计算一个词的权值,以决定是否出现在结果集中,具体如下:

mysql在集和查询中的对每个合适的词都会先计算它们的权重,一个出现在多个文档中的词将有较低的权重(可能甚至有一个零权重),因为在这个特定的集中,它有较低的语义值。否则,如果词是较少的,它将得到一个较高的权重,mysql默认的阀值是50%,上面‘you’在每个文档都出现,因此是100%,只有低于50%的才会出现在结果集中。 但是如果不考虑权重,那么该怎么办呢?MySQL提供了布尔全文检索(BOOLEAN FULLTEXT SEARCH)

假设well在所有记录中都出现,并且ft_min_word_len已经改为2,那么下面的SQL检索语句得到的结果集将包含所有记录:

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('well');

5. 布尔全文检索语法

上面通过IN BOOLEAN MODE指定全文检索模式为布尔全文检索。MySQL还提供了一些类似我们平时使用搜索引擎时用到的的语法:逻辑与、逻辑或、逻辑非等。具体通过几个SQL语句例子来说明

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple -banana' IN BOOLEAN MODE); + 表示AND,即必须包含。- 表示NOT,即不包含。

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('apple banana' IN BOOLEAN MODE); apple和banana之间是空格,空格表示OR,即至少包含apple、banana中的一个。

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple banana' IN BOOLEAN MODE); 必须包含apple,但是如果同时也包含banana则会获得更高的权重。

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple ~banana' IN BOOLEAN MODE); ~ 是我们熟悉的异或运算符。返回的记录必须包含apple,但是如果同时也包含banana会降低权重。但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回。

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple +(>banana 6. MySQL不支持中文的全文检索

默认MySQL不支持中文全文检索,怎么办?大致方法有下面几个:

A. 扩展MySQL,添加中文全文检索支持,难度较大

B. 为中文内容表提供一个对应的英文索引表(即将FULLTEXT索引列按照一定的规则转化成英文索引表中的每一条记录,比如全部进行base64编码,内容表和英文索引表的id相同),检索时先将检索词也用相同规则转换成英文,然后再使用。如果还要支持按拼音全文检索,那么还需要在索引表中增加对应的拼音内容(就需要中文转拼音算法了)。当然如果还需要支持中英文交互搜索,比如搜索William时也需要返回威廉,反之亦然,那么还需要将威廉对应的英文翻译也存到索引表中去。

参考网上的链接,具体做法包括先对中文内容进行分词,然后中文转换为四位区位码存到索引表中。检索时,包含中文的检索词也要先分词,再转换为四位区位码,然后在索引表中进行全文检索。

7. 核对条目

A. 只有存储引擎类型为MyISAM类型的表,并且MySQL版本为4.X或者以上才能使用MySQL内置的全文检索支持

B. MySQL全文检索默认不支持中文,且对英文检索时忽略大小写

C. MySQL全文检索时,默认检索长度为4,即关键词的长度必须大于5才能被捕获

D. MySQL全文检索时,所有FULLTEXT索引列必须使用相同的字符集

E. MySQL全文检索返回结果集时还会考虑权重

F. MySQL全文检索还支持灵活的布尔全文检索模式

G. 更多内容参考MySQL5官方手册

EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。

另外,Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

学习教程快速掌握从入门到精通的电脑知识

软件推荐:

mysql 全文检索 教程_MySQL:详细说明MySQL全文检索图文详细教程相关推荐

  1. mysql注释符号_MySQL基础知识(2021最新版教程)

    一.MySQL简介 MySQL是一种开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General ...

  2. mysql解压版下载安装教程_mysql 解压版安装配置方法教程

    1.首先,你要下载MySQL解压版,下载地址 虽然mysql都有8.0了,但这里我要安装的是mysql5.7,其他版本方法类似 2.解压安装包,根据自己的喜好选择路径,我选择的路径是D盘,因此MySQ ...

  3. mysql workbench安装教程_MySql可视化工具MySQL Workbench使用教程

    1. MySQL Workbench MySQL Workbench 为数据库管理员.程序开发者和系统规划师提供可视化的Sql开发.数据库建模.以及数据库管理功能. 2.MySQL Workbench ...

  4. mysql limit 菜鸟_MySQL之二---MySQL菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  5. mysql基础搭建_MySql基础-构建MySql数据库:安装MySql-server、MySql-client

    1 构建MySQL服务器 1.1 问题 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 ...

  6. mysql密码高级_MySQL数据库高级操作(图文详解)

    数据表高级操作 准备工作:安装MySQL数据库 create database CLASS; use CLASS; create table TEST (id int not null,name ch ...

  7. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  8. mysql数据库启动_MySQL数据库之Mysql启动的方式(四种)

    本文主要向大家介绍了MySQL数据库之Mysql启动的方式(四种) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 废话不多说了,直奔主题了. mysql的四种启动方式: 1.m ...

  9. elastic如何和mysql同步数据_MySQL数据库之mysql 同步数据到 ElasticSearch 的方案

    本文主要向大家介绍了MySQL数据库之mysql 同步数据到 ElasticSearch 的方案 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL Binlog 要通过 ...

  10. php mysql安装图解_mysql安装图解 mysql图文安装教程(详细说明)_MySQL

    bitsCN.com 下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下! 打开下载的mysql安装文件mysql-5.5.15-win32.zip,双击解压缩,运行"set ...

最新文章

  1. 从粒子到宇宙的旅行指南
  2. java dolayout,Component
  3. python怎么读文件夹下的文件夹-python2.7读取文件夹下所有文件名称及内容的方法...
  4. ES6 模块化的基本语法——默认导出 与 默认导入、按需导出 与 按需导入、直接导入并执行模块代码
  5. ca服务器证书鉴定计划,Let’s Encrypt 项目计划自动化地提供免费的 CA 证书
  6. c语言设计 数组的知识点,C语言程序设计知识点及示例.pdf
  7. python樱花制作教程视频_大型Python视频资料,阿里巴巴推荐,用Python画一棵漂亮的樱花树...
  8. 从数学基础到贝叶斯理论到实践——深度AI科普团队
  9. oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
  10. PHP数组的访问方法有几种,PHP数组的几种遍历方法
  11. 发卡网shell漏洞_Apache Tomcat文件包含漏洞(CVE-2020-1938)复现
  12. jsarraybufferdaya释放_聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer
  13. phpstorm的安装和破解
  14. java离职交接文档_提醒 | 定了!财会人离职不办这2项交接,要承担法律责任!后果非常严重,请转发通知~...
  15. iphone配置实用工具出错解决
  16. python自带的库有哪些_吐血整理!140种Python标准库、第三方库和外部工具都有了...
  17. 如何电脑上怎样查看微信聊天记录
  18. 【定时自动清理磁盘空间】
  19. 怎么对文件夹名称进行编号排序
  20. TeamViewer的LAN局域网内连接

热门文章

  1. Windows环境 和 Linux环境下搭建Qt开发环境
  2. linux字符设备驱动的 ioctl 幻数
  3. pytorch无法将模型加载到gpu上
  4. 复习日记-validate表单校验插件/菜单管理dTree
  5. 如何将视频下载并且转码拼接
  6. Handler延迟事件使用
  7. java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归...
  8. HTTP学习笔记:HTTP的消息结构
  9. numpy中的savez()同时保存数组、字符串、字典数据
  10. redis hash结构如何设置过期时间