2010-10-23 63 views
2

我有一個數據庫,其中包含文檔和其中的單詞列表。每一行代表一個術語。什麼我希望做的是計算有多少文檔中出現的單詞計算不同的同現

因此,考慮到以下幾點:

+ doc + word + 
+-------+--------+ 
+ a + foo + 
+-------+--------+ 
+ a + foo + 
+-------+--------+ 
+ a + bar + 
+-------+--------+ 
+ b + bar + 
+-------+--------+ 

我得到的

+ word + count + 
+--------+---------+ 
+ foo + 1 + 
+--------+---------+ 
+ bar + 2 + 
+--------+---------+ 

因爲結果foo只出現在一個文檔中(即使它在該文檔中出現兩次),並且條出現在兩個文檔中。

從本質上講,(認爲)我應該做的是對的字數,下面的查詢吐出來,

SELECT DISTINCT word, doc FROM table 

..但我不能完全弄清楚。任何提示?

回答

5

您可以實際使用distinctcount,如:

select word 
,  count(distinct doc) 
from YourTable 
group by 
     word 
0

這可能是題外話,但我猜這是不是要做到這一點的最好辦法。你爲什麼要跟蹤每個文檔中的每個單詞?看看Oracle Intermedia。它是爲這種事情而建立的(特別是文本搜索)。

+0

我正在練習文本挖掘,實際上是使用另一個Oracle產品 - 數據挖掘工具。我在這裏做的是修剪無趣的單詞(出現在超過98%的文檔中,並且不到1%),以使數據集更小。 – 2010-10-26 04:23:10