我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

前言

其实全文搜索在MySQL中早就支持了,但是一直只支持英文,原因在于它一直使用空格作为分词器,但是对于中文来说,空格显然不太适合,需要根据中文语义进行分词。现在从MySQL 5.7开始,MySQL内置了ngram全文搜索插件支持中文分词,并且对于和引擎都效果显著。

在使用中文搜索分词插件ngram之前,首先要在MySQL配置文件中设置其分词大小,例如

[]

=2

这里将分词大小设置为2,记住,分词大小越大,索引大小也会越大,所以要根据自己的情况设置合适的大小。

表结构示例:

桌子 (

id NOT NULL KEY,(200),body TEXT, (title,body) WITH ngram

) = 设置;

样本数据有6行记录。

mysql> * 来自 \G

****************************1. 行 ****************************

编号:1

标题:数据库管理

在本教程中,我将向您展示如何管理数据库

****************************2. 行 ****************************

编号:2

标题:数据库应用程序开发

正文:学习开发数据库应用程序

****************************3. 行 ****************************

编号:3

标题:MySQL 完全手册

正文:了解有关 MySQL 的一切

****************************4. 行 ****************************

编号:4

标题:数据库和事务处理

正文:数据库事务理论的系统学习

****************************5. 行 ****************************

编号:5

标题:NoSQL的本质

正文:了解各种非结构化数据库

****************************6. 行 ****************************

编号:6

标题:SQL语言详解

正文:详细了解如何使用各种 SQL

6 行插入(0.00 秒)

明确指定全文搜索表源

mysql>="/";

查询成功,0 行(0.00 秒)

通过系统表可以看到数据是如何划分的。

mysql> *来自.E 限制 20,10;

+------+--------------+-------------+-----------+--------+-------++

| 字 | | | | | |

+------+--------------+-------------+-----------+--------+-------++

| 中美| 2 | 2 | 1 | 2 | 28 |

| Xim | 4 | 4 | 1 | 4 | 21 |

| 已学会 | 6 | 6 | 1 | 6 | 16 |

| 希凯 | 3 | 3 | 1 | 3 | 25 |

| 练习数字 | 5 | 5 | 1 | 5 | 37 |

| 理解 | 6 | 7 | 2 | 6 | 19 |

| 理解 | 6 | 7 | 2 | 7 | 23 |

| 事务 | 5 | 5 | 1 | 5 | 12 |

| 事务 | 5 | 5 | 1 | 5 | 40 |

| 管赫| 2 | 2 | 1 | 2 | 52 |

+------+--------------+-------------+-----------+--------+-------++

共 10 行 (0.00 秒)

这里我们可以看到,当分词长度设置为2时,所有的数据都是2条一组的。上面的数据还包含了行位置,ID等信息。

接下来,我将用与原始英文搜索相同的方法演示一系列搜索。

1、自然语言模式检索:

1.获取合格商品的数量。

mysql> COUNT(*) 来自

-> WHERE MATCH (标题,正文) ('数据库' IN MODE);

+----------+

| 计数(*) |

+----------+

| 4 |

+----------+

一组 1 行(0.05 秒)

2. 获取匹配率,

mysql> id,MATCH (title,body) ('数据库' 模式)

AS 分数来自;

+----+----------------------+

| 编号| 分数 |

+----+----------------------+

| 1 | 0. |

| 2 | 0. |

| 3 | 0 |

| 4 | 0. |

| 5 | 0.|

| 6 | 0 |

+----+----------------------+

共 6 行 (0.00 秒)

2. 布尔模式搜索比自然模式搜索更复杂:

1. 匹配已管理且在数据库中的记录,

mysql> * 来自匹配(标题,正文)

-> ('+数据库+管理' 模式);

+----+------------+-----------------------+

| ID| 标题| 正文|

+----+------------+-----------------------+

| 1 | 数据库管理 | 在本教程中,我将向您展示如何管理数据库 |

+----+------------+-----------------------+

1 行 (0.00 秒)

2.有数据库可以匹配,但是没有管理记录。

mysql> * 来自匹配(标题,正文)

-> ('+数据库管理' 模式);

+----+------------------+----------------------------+

| ID| 标题| 正文|

+----+------------------+----------------------------+

| 2 | 数据库应用程序开发 | 学习开发数据库应用程序 |

| 4 | 数据库与事务处理 | 系统学习数据库事务概述 |

| 5 | NoSQL的本质 | 了解各种非结构化数据库 |

+----+------------------+----------------------------+

共 3 行 (0.00 秒)

3.与MySQL匹配,但降低数据库的相关性。

mysql> * 来自匹配(标题,正文)

-> ('>数据库+MySQL' 模式);

+----+---------------+-----------------+

| ID| 标题| 正文|

+----+---------------+-----------------+

| 3 | 完整的 MySQL 手册 | 了解有关 MySQL 的一切 |

+----+---------------+-----------------+

1 行 (0.00 秒)

3.查询扩展模式,比如你要搜索数据库,那么MySQL,DB2也会被搜索。

mysql> * 来自

-> 其中匹配(标题,正文)

-> ('数据库' 带查询 );

+----+------------------+--------------------------------------+

| ID| 标题| 正文|

+----+------------------+--------------------------------------+

| 1 | 数据库管理 | 在本教程中,我将向您展示如何管理数据库 |

| 4 | 数据库与事务处理 | 系统学习数据库事务概述 |

| 2 | 数据库应用程序开发 | 学习开发数据库应用程序 |

| 5 | NoSQL的本质 | 了解各种非结构化数据库 |

| 6 | SQL语言详解 | 详细了解如何使用各种SQL |

| 3 | 完整的 MySQL 手册 | 了解有关 MySQL 的一切 |

+----+------------------+--------------------------------------+

每组 6 行(0.01 秒)

当然我这里只是演示功能,更多的性能测试,大家有兴趣可以做详细测试。由于N-grm是中文搜索常用的分词算法,在互联网上应用非常广泛,所以这次集成到MySQL中,在性能方面应该不会有太大的问题。

总结

以上就是本文的全部内容了,希望本文的内容能够对大家的学习或者工作起到一定的帮助,如果还有疑问的话,大家可以留言交流。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/3246.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线