2009-06-13 44 views
1

我有一張表格,它在一堆文檔中索引單詞的位置。 我想確定集合中最常見的兩個bigrams。在位置索引中查找bigram

你會如何做到這一點MSSQL 2008? 表的結構如下:

LocationID -> DocID -> WordID -> Location 

我曾想過要做某種複雜的加入...而我只是做我的頭

有一個簡單的方法。這樣做?

我想我最好編輯這個週一序撞它的問題

樣本數據

LocationID DocID WordID Location 
21952  534  27 155 
21953  534   109  156 
21954  534  4  157 
21955  534  45  158 
21956  534  37  159 
21957  534  110  160 
21958  534  70  161 
+0

可能想擴展您的數據庫模式,也許有一些示例數據。 – AakashM 2009-06-14 08:37:33

+0

MS SQL 2008 SP1 – 2009-06-14 11:31:45

回答

1

它已經多年,因爲我寫的SQL,所以我的語法可能一點點;不過,我相信這個邏輯是正確的。

SELECT CONCAT(i.WordID, "|", j.WordID) as bigram, count(*) as freq 
FROM index as i, index as j 
WHERE j.Location = i.Location+1 AND 
     j.DocID = i.DocID 
GROUP BY bigram 
ORDER BY freq DESC 

您還可以將實際的詞ID添加到選擇列表中,如果這是有用的,並添加一個加盟你有任何表其提領操作的wordID實際的話。