这里把分词大小设置为2金沙网址

前言

实际上全文检索在MySQL里面很已经协助了,只不过长久以来只补助保加利亚语。缘由是他平素都应用空格来作为分词的分隔符,而对于华语来说,显明用空格就不确切,需求针对中文语义举行分词。那不,从MySQL
5.7方始,MySQL内置了ngram全文字笔迹查验索插件,用来支撑汉语分词,而且对MyISAM和InnoDB引擎有效。

在选用普通话寻觅分词插件ngram早先,先得在MySQL配置文件之中安装他的分词大小,比如,

[mysqld]ngram_token_size=2

那边把分词大小设置为2。要铭记,分词的SIZE越大,索引的体积就越大,所以要依照作者意况来设置合适的深浅。

CREATE TABLE articles ( id INTUNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, titleVARCHAR, body TEXT, FULLTEXT  WITH PARSER ngram ) ENGINE=InnoDBCHARACTER SET utf8mb4;

亲自去做数据,有6行记录。

mysql> select * from articles\G***************************1. row *************************** id: 1title: 数据库管理 body: 在本教程中我将向你展示如何管理数据库***************************2. row *************************** id: 2title: 数据库应用开发 body: 学习开发数据库应用程序***************************3. row *************************** id: 3title: MySQL完全手册 body: 学习MySQL的一切***************************4. row *************************** id: 4title: 数据库与事务处理 body: 系统的学习数据库的事务概论***************************5. row *************************** id: 5title: NoSQL精髓 body: 学习了解各种非结构化数据库***************************6. row *************************** id: 6title: SQL 语言详解 body: 详细了解如果使用各种SQL6 rows inset 

mysql> SETGLOBAL innodb_ft_aux_table="new_feature/articles";Query OK, 0 rows affected 

透过系统表,就可以查阅毕竟是怎么划分articles里的多寡。

mysql> SELECT *FROM information_schema.INNODB_FT_INDEX_CACHE LIMIT 20,10;+------+--------------+-------------+-----------+--------+----------+| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID| POSITION |+------+--------------+-------------+-----------+--------+----------+| 中我 | 2 | 2 | 1 | 2 | 28 || 习m | 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 rows in set 

此间能够看来,把分词长度设置为2,全部的数码都只有多少个生龙活虎组。下边数据还包蕴了行的职位,ID等等信息。

接下去,小编来拓宽一文山会海检索示范,使用方式和原Bend文字笔迹核实索生龙活虎致。

意气风发、自然语言形式下搜索:

1、获得符合条件的个数,

mysql>SELECT COUNT FROM articles-> WHERE MATCH  AGAINST ('数据库' IN NATURALLANGUAGE MODE);+----------+| COUNT |+----------+| 4 |+----------+1 row in set 

2、得到相称的比值,

 mysql>SELECT id, MATCH  AGAINST ('数据库' IN NATURAL LANGUAGE MODE) AS score FROM articles;+----+----------------------+| id| score |+----+----------------------+| 1 | 0.12403252720832825 || 2 | 0.12403252720832825 || 3 | 0 || 4 | 0.12403252720832825 || 5 | 0.062016263604164124|| 6 | 0 |+----+----------------------+6rows in set 

二、布尔格局下搜索,这么些就绝对于自然格局寻觅来的长短不一些:

1、相配既有保管又有数据库的记录,

mysql> SELECT * FROM articles WHERE MATCH  -> AGAINST ('+数据库 +管理' IN BOOLEAN MODE);+----+------------+--------------------------------------+| id| title | body |+----+------------+--------------------------------------+| 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库 |+----+------------+--------------------------------------+1 rowin set 

2、相称有数据库,不过未有管理的记录,

mysql> SELECT * FROM articles WHERE MATCH  -> AGAINST ('+数据库 -管理' IN BOOLEAN MODE);+----+------------------+----------------------------+| id| title | body |+----+------------------+----------------------------+| 2 | 数据库应用开发 | 学习开发数据库应用程序 || 4 | 数据库与事务处理 | 系统的学习数据库的事务概论 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 |+----+------------------+----------------------------+3 rows in set 

3、相配MySQL,可是把数据库的相关性裁减,

mysql> SELECT * FROM articles WHERE MATCH  -> AGAINST ('>数据库 +MySQL' INBOOLEAN MODE);+----+---------------+-----------------+| id| title | body |+----+---------------+-----------------+| 3 | MySQL完全手册 |学习MySQL的一切 |+----+---------------+-----------------+1 rowin set 

三、查询扩张情势,比方要搜索数据库,那么MySQL,oracle,DB2也都将会被寻觅到,

mysql> SELECT * FROM articles -> WHERE MATCH  -> AGAINST ('数据库' WITH QUERY EXPANSION);+----+------------------+--------------------------------------+| id| title | body |+----+------------------+--------------------------------------+| 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库 || 4 | 数据库与事务处理 | 系统的学习数据库的事务概论 || 2 | 数据库应用开发 | 学习开发数据库应用程序 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 || 6 | SQL 语言详解 | 详细了解如果使用各种SQL || 3 | MySQL完全手册 | 学习MySQL的一切 |+----+------------------+--------------------------------------+6 rows in set 

本来,笔者这里只是职能演示,越多的属性测量试验,大家风乐趣能够开展详细测量检验。由于N-grm是中文查找常用的分词算法,已经在网络大量用到,这一次合併到MySQL中,想必效果上不会有太大的难题。

总结

如上便是那篇作品的全体内容了,希望本文的内容对我们的上学或许干活能拉动一定的提携,若是有疑问我们能够留言调换。

相关文章