MySQL 全文检索初窥

1. 全文索引是什么?

如果我们要对数据库中的文本进行模糊查询,有什么办法?最容易想到的办法就是用sql的like语句,例如:

SELECT * FROM table_name WHERE keyword LIKE '%keyword%'

可是然而但是,很快你会发现,这样做的效率不是一般的低下。如果有100万条以上的数据的话,速度往往是不能忍受的。而且LIKE ‘%keyword%’的话无法使用索引来加速。

全文索引是一个解决上述问题的一个方案。原理是先定义一个词库,然后在文章中查找每个词条(term)出现的频率和位置,把这样的频率和位置信息按照词库的顺序归纳,这样就相当于对文件建立了一个以词库为目录的索引,这样查找某个词的时候就能很快的定位到该词出现的位置。

这样做对于字母文字来说问题不大,无论英语,法语,德语还是意大利语,西班牙语等都是一个个单词之间由空格或其他标点符号来分割各个单词的。可是中文……

2. 中文问题

中文的词和词之间一般是没有空格的,你怎么知道“下雨天留客天留我不留”是要分成“下雨天 留客天 留我不留”还是“下雨 天留客 天留 我不留”?必须把中文的句子分成一个个词,才能进行全文检索。

3. 中文分词

确实中文分词是个难点,但是现在已经有很多的解决方案了。
1. 这个是一个中文分词的API
http://api.pullword.com/get.php?source=%E5%B7%B4%E6%96%AF%E5%BE%B7%E7%A7%BB%E6%B6%B2%E7%AE%A1&param1=0&param2=0

  1. 新浪SAE的中文分词调用API
    http://sunweiwei.com/1451/

  2. PHP开源的中文分词系统
    http://www.xunsearch.com/scws/demo.php

  3. Discuz! 中文分词
    http://www.qqoq.net/php-chinese-words-segmentation.html

  4. 海量分词
    http://home.hylanda.com/show_5_19.html

我会在另一篇文档里介绍怎么利用现场的方案来实现中文分词的。

4. MySQL里的全文索引

对于InnoDB数据库引擎,需要MySQL版本在5.6以上

select *  from t_pd_product where MATCH(f_desc_chn, f_desc_eng) AGAINST('硫酸铜') LIMIT 200

需要对f_desc_chn和f_desc_eng一起做全文索引

修改my.ini文件来设置
innodb_ft_min_token_size=1
innodb_ft_max_token_size=20

my.ini的位置在: 查看服务->mysql的路径里。

参考资料

  1. 百度百科-全文索引
  2. 全文索引原理及范例
CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值