手机版

MySQL全文检索解读

时间:2021-08-03 来源:互联网 编辑:宝哥软件园 浏览:

类型:电子教程大小:8.5M语言:中文评分:8.3标签:立即下载1。MySQL 4 . x及以上版本提供全文检索支持,但表的存储引擎类型必须是MyISAM,下面是表创建SQL。注意存储引擎类型create table articles的显式设置(id int unsigned auto _ increment not null主键,title varchar (200),body text,全文(title,body))engine=myisam default charset=utf8;其中,FULLTEXT(title,body)为title和body两列建立全文索引,然后在搜索时注意同时指定两列。2.插入测试数据插入文章(标题,正文)值(MySQL教程’,DBMS代表数据库.’),(‘怎么用好MySQL’,‘你经历了一次之后……’),('优化MySQL ','在本教程中我们将展示.'),(' 1001 MySQL小技巧',' 1。永远不要以root用户身份运行mysqld。2.'),(' MySQL vs. YourSQL ','在下面的数据库比较中.'),(“MySQL安全性”,“如果配置正确,MySQL .”);从匹配的文章(标题、正文)中选择*(“数据库”);搜索结果如下:5 MySQL与你的SQL在以下数据库中的对比.1 MySQL教程DBMS代表数据库.指示在全文匹配中忽略大小写。4.可能遇到的麻烦到目前为止都很顺利,但是如果把搜索SQL改成下面这样呢?选择* FROM articlesWHERE MATCH(标题,正文)兑(' well ');结果出乎人的意料,一开始我困惑了很久。后来上网查了一下才知道原来是这样的:mysql指定了最小字符长度,默认为4。只有当它匹配超过4时,才会返回结果。您可以使用“ft _ min _ word _ len”等显示变量来检查指定的字符长度。您也可以通过在my.ini中添加一行,如ft_min_word_len=2,并在更改后重新启动mysql,来更改mysql配置文件my.ini中的最小字符长度。所以上面不能返回结果。但是在我用上面的方法更改了配置文件之后,我用show命令检查了一下,但是没有改变。另外,mysql会计算一个词的权重来确定它是否出现在结果集中,如下:MySQL会先计算集合中每个合适的词的权重并进行查询,一个词出现在多个文档中的权重会更低(甚至可能是零权重),因为它在这个特定集合中的语义值更低。否则字数少了,权重就高了。mysql的默认阈值是50%。上面的‘你’出现在每个文档中,所以是100%。只有那些低于50%的才会出现在结果集中。但是如果不考虑重量,怎么办?MySQL提供了BOOLEAN FULLTEXT SEARCH。假设well出现在所有记录中,并且ft_min_word_len已更改为2,则通过以下SQL检索语句获得的结果集将包含所有记录:从匹配(标题、正文)的文章中选择*对(‘well’);5.布尔全文检索语法上面指定的全文检索模式是布尔全文检索。MySQL还提供了一些类似于我们在使用搜索引擎时通常使用的语法:逻辑AND、逻辑OR、逻辑NOT等。从匹配(标题、正文)的文章中选择*(布尔模式下为“苹果-香蕉”);意味着AND,即必须包含。-表示NOT,即不包含。从文章中选择*匹配(标题,正文)反对(布尔模式下的‘苹果香蕉’);苹果和香蕉之间有一个空格,空格的意思是OR,即苹果和香蕉中至少有一个包含在内。从文章中选择*匹配(标题,正文)反对(布尔模式下的‘苹果香蕉’);苹果必须包括在内,但如果香蕉也包括在内,它的重量会更高。从文章中选择*匹配(标题、正文)反对(布尔模式下的“苹果~香蕉”);~是熟悉的异或运算符。返回的记录必须包含苹果,但如果它也包含香蕉,重量将会减少。但是它没有苹果香蕉那么严格,因为后者如果含有香蕉的话根本不退货。

从文章中选择*在布尔模式下匹配(标题,正文)反对(‘苹果(香蕉橙)’);返回同时包含苹果和香蕉或苹果和橘子的记录。然而,同时包含苹果和香蕉的记录比同时包含苹果和橘子的记录具有更高的权重。6.MySQL不支持中文全文检索。默认情况下,MySQL不支持中文全文检索。我该怎么办?一般方法如下:a .难以扩展MySQL和增加中文全文检索支持。b .为中文内容表提供对应的英文索引表(即FULLTEXT索引列按照一定的规则转换成英文索引表中的每一条记录,例如所有记录都用base64编码,内容表的id与英文索引表的id相同)。如果要支持按拼音进行全文搜索,需要在索引表中添加相应的拼音内容(需要中文到拼音的算法)。当然,如果还需要支持中英文交互搜索,比如在搜索William时需要返回William,反之亦然,那么还需要在索引表中存储William对应的英文翻译。参考互联网上的链接,具体方法是先将中文内容进行分段,然后将中文转换成四位数的位置码存储在索引表中。搜索时,先将含有中文的搜索词分段,再转换成四位位置码,然后在索引表中进行全文搜索。7.检查项目a .只有带有MyISAM存储引擎类型和MySQL版本4的表。x以上可以使用MySQL内置全文检索支持B. MySQL全文检索默认不支持中文,英文检索忽略大小写C. MySQL全文检索默认检索长度为4。也就是说,关键字的长度必须大于5才能被捕获。d . MySQL全文检索时,所有FULLTEXT索引列必须使用相同的字符集。E. MySQL全文检索在返回结果集时也会考虑权重。F. MySQL全文检索还支持灵活的布尔型全文检索模式。更多信息请参考MySQL5官方手册。

版权声明:MySQL全文检索解读是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。