2011-11-17 24 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