mysql中文进行全文索引支持问题

本文探讨了MySQL的MyISAM和InnoDB存储引擎的特性,着重讲解了全文索引在MySQL中的实现原理,包括如何从文章内容中提取关键词建立索引。对于中文全文索引的挑战,由于中文词汇间无明显分隔符,MySQL内置的全文检索不支持中文。解决方案包括在存储时自行插入分隔符或使用第三方分词插件,如Sphinx,以提高全文搜索的准确性。
摘要由CSDN通过智能技术生成

MySQL 中的MyISAM存储引擎的特性:


  1. 不支持事务,没有行级锁,当数据库崩溃时,不可以安全恢复
  2. 加锁并发
  3. 当读取某个表的数据时,会给该表加共享锁,写入时会加排他锁,在查询表的数据时可以并发插入新的记录
  4.    索引特性  支持 Text Blog 类型的字段作为索引,基于前500个字符创建,也支持全文索引
  5. 延迟更新索引键   每次修改键索引数据并不会马上写入硬盘上,而是在内存中的键缓冲区,在清理缓存区或关闭表时才写入磁盘中,但是当数据库崩溃时会造成索引的损失,需要执行修复操作
  6. MyISAM压缩表 就是当某个表创建时,并不需要进行修改则可以将表压缩,这样既节省了磁盘空间,又可以减少磁盘I/O 从而提升了查询的性能,压缩表也支持索引,不过也是只读的。

InnoDB存储引擎特性


  1. 支持事务,支持在线热备份,不需要关闭服务器就能备份
  2. 默认隔离级别为可重复读,使用 MVCC多版本并发控制,提高了并发性
  3. 使用间隙锁来防止幻读,不仅仅涉及到读取的行,还会是用间隙锁防止插入其他数据
  4. 是基于聚族索引建立的数据库,对于主键的查询很高的性能。二级索引(非主键索引)必须包含主键列,若主键列比较大时,其他索引列也会很大,所以主键列尽可能小


MYISM 支持全文索引:
给数据库表添加一个MYISAM数据库引擎
alter table song engine=MYISAM
alter table song add fulltext index(songname)  
也可以对多个字段加全文索引
alter table song add fulltext index(songname,songkind)
select * from song match(songname) against('zhou')


MyISAM:特点  设计简单,数据以紧密格式存储,最典型的性能问题是表锁


先来看看对一个字段做全文索引,作为一个数据库系统需要做哪些工作?

假设一个文章表里面包含几个字段:文章id、文章作者、文章标题、文章内容

 

比如,我们对文章内容这个字段artilce_content建立全文索引,这样方便对文章里面的内容使用关键词搜索。

 

数据库系统首先需要从文章内容(这个字段内容)中提取关键词,因为只有提取了关键词,才好建立类似索引目录—类似于新华字典那样的笔画页码对应关系,当你搜索一个词语”beijing”的时候,就直接去索引中查找,然后就可以定位到数据行的具体位置了,不需要扫描文章表很多行。

 

这就像,如果我想去新华字典中查找一个汉字,我直接按照笔画或者按照拼音来查找(这个就是新华字典的索引),避免把新华字典从头翻到尾部,这样的效率多低。没错,如果没有索引,数据库系统就是需要这样子遍历扫描整个表才能得到数据的。

 

 

ps:机器其实是死的,你写的代码让他做什么就做什么。而人有眼睛,可以通过眼睛来看,比如大体翻看一下新华字典,也许眼睛就看到我需要的汉字了呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值