当前位置:首页 > 数据库 > 正文

mysql中文网(MySQL简介)

mysql中文网(MySQL简介)

这篇文章给大家聊聊关于mysql中文网,以及MySQL简介对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。mysql的中文全文搜索,关于分词,有没有好的解决方案全...

这篇文章给大家聊聊关于mysql中文网,以及MySQL简介对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

mysql的中文全文搜索,关于分词,有没有好的解决方案

全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。

这不,从MySQL5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。

在使用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小,比如,[mysqld]ngram_token_size=2这里把分词大小设置为2。要记住,分词的SIZE越大,索引的体积就越大,所以要根据自身情况来设置合适的大小。示例表结构:

CREATETABLEarticles(idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,titleVARCHAR(200),bodyTEXT,FULLTEXT(title,body)WITHPARSERngram)ENGINE=InnoDBCHARACTERSETutf8mb4;示例数据,有6行记录。mysql>select*fromarticles\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:详细了解如果使用各种SQL6rowsinset(0.00sec)显式指定全文检索表源mysql>SETGLOBALinnodb_ft_aux_table="new_feature/articles";QueryOK,0rowsaffected(0.00sec)通过系统表,就可以查看到底是怎么划分articles里的数据。

mysql>SELECT*FROMinformation_schema.INNODB_FT_INDEX_CACHELIMIT20,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|+------+--------------+-------------+-----------+--------+----------+10rowsinset(0.00sec)这里可以看到,把分词长度设置为2,所有的数据都只有两个一组。上面数据还包含了行的位置,ID等等信息。

接下来,我来进行一系列检索示范,使用方法和原来英文检索一致。1.自然语言模式下检索:A,得到符合条件的个数,mysql>SELECTCOUNT(*)FROMarticles->WHEREMATCH(title,body)AGAINST('数据库'INNATURALLANGUAGEMODE);+----------+|COUNT(*)|+----------+|4|+----------+1rowinset(0.05sec)B,得到匹配的比率,mysql>SELECTid,MATCH(title,body)AGAINST('数据库'INNATURALLANGUAGEMODE)ASscoreFROMarticles;+----+----------------------+|id|score|+----+----------------------+|1|0.12403252720832825||2|0.12403252720832825||3|0||4|0.12403252720832825||5|0.062016263604164124||6|0|+----+----------------------+6rowsinset(0.00sec)2.布尔模式下搜索,这个就相对于自然模式搜索来的复杂些:A,匹配既有管理又有数据库的记录,mysql>SELECT*FROMarticlesWHEREMATCH(title,body)->AGAINST('+数据库+管理'INBOOLEANMODE);+----+------------+--------------------------------------+|id|title|body|+----+------------+--------------------------------------+|1|数据库管理|在本教程中我将向你展示如何管理数据库|+----+------------+--------------------------------------+1rowinset(0.00sec)B,匹配有数据库,但是没有管理的记录,mysql>SELECT*FROMarticlesWHEREMATCH(title,body)->AGAINST('+数据库-管理'INBOOLEANMODE);+----+------------------+----------------------------+|id|title|body|+----+------------------+----------------------------+|2|数据库应用开发|学习开发数据库应用程序||4|数据库与事务处理|系统的学习数据库的事务概论||5|NoSQL精髓|学习了解各种非结构化数据库|+----+------------------+----------------------------+3rowsinset(0.00sec)C,匹配MySQL,但是把数据库的相关性降低,mysql>SELECT*FROMarticlesWHEREMATCH(title,body)->AGAINST('>数据库+MySQL'INBOOLEANMODE);+----+---------------+-----------------+|id|title|body|+----+---------------+-----------------+|3|MySQL完全手册|学习MySQL的一切|+----+---------------+-----------------+1rowinset(0.00sec)3,查询扩展模式,比如要搜索数据库,那么MySQL,oracle,DB2也都将会被搜索到,mysql>SELECT*FROMarticles->WHEREMATCH(title,body)->AGAINST('数据库'WITHQUERYEXPANSION);+----+------------------+--------------------------------------+|id|title|body|+----+------------------+--------------------------------------+|1|数据库管理|在本教程中我将向你展示如何管理数据库|4|数据库与事务处理|系统的学习数据库的事务概论|2|数据库应用开发|学习开发数据库应用程序||5|NoSQL精髓|学习了解各种非结构化数据库||6|SQL语言详解|详细了解如果使用各种SQL||3|MySQL完全手册|学习MySQL的一切|+----+------------------+--------------------------------------+6rowsinset(0.01sec)当然,我这里只是功能演示,更多的性能测试,大家有兴趣可以进行详细测试。由于N-grm是中文检索常用的分词算法,已经在互联网大量使用,这次集成到mysql中,想必效果上不会有太大的问题。

mysql属性能不能用中文

首先,在MySQL都使用中文变量名、数据库表名和字段名是完全可的以。

原则上,中文和英文都被支持:

1,主流的RDBMS,比如SQLServer2012,对多语言的支持已经非常好

2,SQL语言允许使用中文,当然注意切换输入法时不要粗心混淆中英文标点

mysql属性能使用中文命名的

MySQL数据库怎么让表名和字段名支持中文

只要你创建数据库和数据表的时候指定它支持中文的字符集,也就是指定编码为DEFAULTCHARACTERSETgb2312;这样,希望对你有帮助

MySQL workbench界面显示语言怎么设置成中文

MySQLworkbench界面显示语言设置成中文方法如下

首先,打开MySQLWorkbench程序,然后在页面的顶部菜单栏中选择“编辑(Edit)”选项。

接下来,单击“首选项(Preferences)”选项,在弹出的窗口中选择“外观(Appearance)”选项,然后在右侧的下拉菜单中选择“中文(Chinese)”语言。

最后,单击“应用(Apply)”按钮,然后单击“确定(OK)”来保存并应用更改。这样,您就可以将MySQLWorkbench界面语言设置成中文,以便更容易地使用此MySQL数据库管理工具。

如何让MYSQL支持中文

要让MySQL支持中文,需要进行以下操作:1.确保MySQL服务器安装了支持中文的字符集。可以通过以下命令查看当前服务器所使用的字符集:```SHOWVARIABLESLIKE'character_set_server';```如果字符集是utf8或utf8mb4,则表示已经支持中文。如果不支持,则需要修改MySQL配置文件。2.修改MySQL配置文件。找到MySQL配置文件my.cnf(或者my.ini),一般位于MySQL安装目录的bin文件夹下。打开该文件,在[mysqld]部分添加以下配置:```character-set-server=utf8collation-server=utf8_general_ci```添加完后,保存文件并重启MySQL服务器。3.修改数据库和表的字符集。可以通过以下命令修改数据库和表的字符集:```ALTERDATABASEdatabase_nameCHARACTERSETutf8COLLATEutf8_general_ci;ALTERTABLEtable_nameCONVERTTOCHARACTERSETutf8COLLATEutf8_general_ci;```其中,database_name是数据库名,table_name是表名。4.确保应用程序连接MySQL时使用了正确的字符集。在连接MySQL的代码中,可以使用以下语句来设置字符集:```SETNAMES'utf8';```这样可以确保应用程序与MySQL服务器使用相同的字符集。通过以上步骤,你的MySQL服务器就可以支持中文了。

mysqlworkbench8030怎么换成中文

MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql-uroot–p,之后两次输入root用户的密码),查看数据库的编码方式命令为:

好了,文章到此结束,希望可以帮助到大家。

最新文章