计算数据库中单词出现次数的最佳解决方案

时间:2012-09-06 17:26:35

标签: mysql database database-design

我将为线程标题中出现的每个单词搜索论坛新主题页面,以制作一种流行趋势(如Google趋势)。我找到了一种方法来刮掉它,但我不知道应该如何将它存储在数据库中以获得最佳性能。我想到了两种不同的方式。

  1. 存储一行中的新单词,如果单词不是新单词,请在“出现次数”字段中添加一个计数。

  2. 将每个单词存储在自己的行中,无论如何。

  3. 这个问题还有其他解决办法吗?

2 个答案:

答案 0 :(得分:1)

想法#1是最紧凑的,通常应该是最快的。使用单词和日期上的唯一键,检查INSERT / ON DUPLICATE KEY。

如果你存储的不是其他数据,比如论坛帖子的id等,那么#2想法变得很重要。

祝你好运。

答案 1 :(得分:1)

如果你遇到了抓取的麻烦,你应该保持多层次的信息。

首先,跟踪您遇到的每个论坛标题,以及发布日期(以及发现日期)以及其他信息。您可以在论坛标题上添加全文索引,这将为您提供查找相同单词(“数据库”和“数据库”)的相似版本的良好功能。

其次,将每个单词分别存储在一个表格中,同时发布(或找到它)的日期和时间以及返回发布表格的链接。谷歌趋势的价值并不在于它总是保留了大量的词汇。这是你可以随着时间的推移分解它。

然后,在查询中进行聚合。如果遇到性能问题,可以按日期对数据进行分区,因此大多数查询只会读取数据的子集。如果汇总使用率很高,那么您可以批量考虑汇总,例如每晚一次。

最后,你将如何处理随时间出现的不同版本的单词?拼写错误?一个标题中同一个单词的多个外观?