2011-11-17 57 views
2

我想问你一些关于我论文研究的建议。执行字数统计的高效实施

我建立一个应用程序,我将在其中有200-300字1000篇文章,然后一个“字频率列表” - 30.000的话,每个人根据整个英语语料库例如使用额定“ - ” - 20168次,“ - ”6464684次,“熟人” - 15次等等......

现在我想用单词列表查询数据库,我希望返回的文章包含大多数这些词,最多次。

E.g.: my list: different, contemporary, persistency. 
Article 1 contains contemporary 1x 
article 2 contains contemporary 3x 
So the returned article would be no 2. 

问题

  1. 我应该在数据库中创建的单词和文章之间没什么关系。我的意思是,每一个300字(不是唯一的)就是一千个文章,这将是一个列表。或者索引是否足够?

  2. Mysql的VS甲骨文?使用Mysql,我会使用SOLR进行索引,我知道oracle有一个索引工具,但没有更多关于它的信息。

  3. 是Oracle与这样的功能免费提供?而且也很容易处理,因为我从来没有使用它,但如果设置很容易,我会去做。

非常感谢!

+1

您正在讨论的大小应该不会在免费的Oracle XE数据库或mysql数据库上运行任何问题。你已经有评分单的清单了吗?如果文章中有一个词不在您的评分列表中,会发生什么情况? –

+0

@MthetheWWatson是的,我有名单。如果这个词不存在,那么它不应该返回。 Oracle是否带有用于此目的的索引? – myro

回答

3

我会建议你使用Hadoop的执行字计数操作。这将在稍后扩展(你是研究人员!)并且高效。此外,建立单词之间的关系以及数据库中的文章看起来并不是一个整洁的解决方案。

如果你选择的Hadoop,它会提供的MapReduce的功能。它的工作原理是这样的:

  • 将所有输入的文本文件在多个物理机器
  • 每一台机器进行字数算法
  • 结果是从所有的机器收集,然后合并,得到最终的输出。

您不必担心实现这些功能,这里是一个tutorial

字计数的工作也可以在本地一台机器上运行。

+0

看起来不错,但它有任何索引?结果存储在哪里?因为我在合理的时间内需要这些结果(如几秒钟) – myro

+0

结果将存储在一个平面文件中。 – ajmartin