我怎么可以创建一个有序列的最常见的子里的我MySQL varchar列?
-
05-07-2019 - |
题
我有一个数据库表与几千行。该表的设置,像这样:
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次出现的"我"
- 2次出现的"有"
- 1个出现的鸡'
- .等等。等等
另外,我可能会想要维持一个列表中的字符忽略从名单,就像'我','将会'和'。重要的是要注意,我不知道是什么人们将发布。
我没有名单的话,我想要监控,我只是想找到的最常见的子.我会再过滤出的任何错误子,是不是有趣从名单人工编辑查询。
任何人都可以建议的最佳方式做到这一点?谢谢大家!
解决方案
MySQL已经做这个给你。
首先确保你的表一些表
定义的全文索引你的专栏
在一个命令行导航的文件夹里你MySQL数据的储存,那么类型:
myisam_ftdump -c yourtablename 1 >wordfreq.dump
然后你可以过程wordfreq.转储消除不需要的列和按频率递减.
你可以做所有上述与一个单一的命令行和一些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个字符数,唯一的办法就是要重新编译MySQL用不同的规则FULLTEXT.我不建议那!
其他提示
提取到的平面文件,然后用你喜欢快的语言,perl,蟒蛇,红宝石等进程的文件。
如果你没有一个这些语言的一部分,你的技能,这是一个完美的小任务开始使用一个,它不会需要你长时间。
一些数据库的任务只是这样更容易做到外部的数据库。
你可能会想要看看MySQL 全文分析器插件