我有一个具有两千行的MySQL数据库表。该表的设置如下:
id | text
该id列是一个自动递增的整数,并且该text列是一个200个字符的varchar。
说我有以下几行:
3 | I think I'll have duck tonight
4 | Maybe the chicken will be alright
5 | I have a pet duck now, awesome!
6 | I love duck
然后,我要生成的列表可能类似于:
3次“鸭子” 3次出现“ I” 2次出现“有” 1次“鸡肉” .etc .etc 另外,我可能想要维护一个子字符串列表,以便从列表中忽略它们,例如“ I”,“ will”和“ have”。重要的是要注意,我不知道人们会发布什么。
我没有要监视的单词列表,我只想找到最常见的子字符串。然后,我将通过编辑查询从列表中手动过滤掉所有不必要的错误子字符串。
有人可以建议最好的方法吗?感谢大家!
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MySQL已经为您做到了。
首先确保您的表是MyISAM表
在列上定义FULLTEXT索引
在shell命令行上,导航到存储MySQL数据的文件夹,然后键入:
myisam_ftdump -c yourtablename 1 >wordfreq.dump 然后,您可以处理wordfreq.dump以消除不需要的列,并按频率下降的顺序进行排序。
您可以使用单个命令行和一些sed / awk向导来完成以上所有操作。您可以将其合并到程序中,而无需转储文件。
有关myisam_ftdump的更多信息,请参见:http ://dev.mysql.com/doc/refman/5.0/en/myisam-ftdump.html
哦,还有一件事,MySQL的停用词已预编译到引擎中。少于3个字符的单词不会被索引。完整列表在这里:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html
如果此列表不足以满足您的需求,或者您需要计数少于3个字符的单词,则唯一的方法是使用针对FULLTEXT的不同规则重新编译MySQL。我不建议这样做!