我有一个表,它索引了一堆文档中单词的位置。
我想找出最常见的大字集。
在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
最佳答案
我已经很多年没有写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
如果有用的话,您还可以将实际的WordID添加到select列表中,并将一个连接添加到您拥有的将WordID取消引用到实际单词的任何表中。
关于sql-server - 在位置索引中查找二元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/990226/