我有一个表,它索引了一堆文档中单词的位置。
我想找出最常见的大字集。
在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/

10-13 08:19