mysql 全文检索 插件_MySQL全文检索插件

hightman实现了一个MySQL全文检索的插件。它只能使用在5.1.11-12,并且需要更改MySQL的源码,故对其做了一些修改,替换了一个MySQL后续版本中更改了的接口,去掉了一些不需要的功能。

hightman的插件使用了自己的wordlist和stopword list,并使用正向最大匹配分词,新的插件对算法没有任何改变。插件只支持utf8,就是说用于建索引的字段的字符集必须为utf8。wordlist 中只有26万的词汇,可能分词不是很准确,因为我不太清楚好的分词是什么样子,所以也说不准。支持normal mode和boolean mode,不支持query expansion。分词的速度大概为65M的文本建索引需要85秒(没比较,不知道是快还是慢)。源码见最后的链接。

使用方法:

1. 编译插件,MySQL必须是5.1.12版之后的版本,编译出来的so文件必须放在MySQL安装目录的lib/plugin目录下

shell> gcc -DMYSQL_DYNAMIC_PLUGIN -Wall -shared \

-I/usr/local/mysql/include \

-I/usr/local/mysql-source/include \

-I/usr/local/mysql-source \

-o /usr/local/mysql/lib/plugin/libthunder_ft.so \

thunder_ft.c

2. 拷贝wordlist,将附件中的wordlist和stopword两个文件放到/usr/local/mysql/share/mysql中

3. 进入mysql,安装插件

mysql> install plugin thunder_ft soname 'libthunder_ft.so';

4. 建索引时增加 with parser thunder_ft 修饰

mysql> alter table review add fulltext index i_title_content(title, content) with parser thunder_ft;

5. 使用全文索引

mysql> select * from review where match(title, content) against('+大显 +手机' in boolean mode);

注意match中必须列出索引中的每一项。如果希望对title单独检索,则必须要为title这一列单独建一个索引。

6. 可以查看插件被调用了多少次用于分词

mysql> show global status like 'thunder_ft_called';

7. 因为要将wordlist放在内存中,所以这个插件会使用十几兆的内存。当不需要使用时,可以卸载。

mysql> uninstall plugin thunder_ft;

本文转载自:静室

欢迎加入我爱机器学习QQ14群:336582044

getqrcode.jpg

微信扫一扫,关注我爱机器学习公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值