我有一个表格,用于索引一堆文档中单词的位置。 我想确定集合中最常见的双字母组合。
您将如何在 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 :(得分: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取消引用到实际单词的任何表中。