我有一个数据库表与几千行。该表的设置,像这样:

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 全文分析器插件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top