1

一連のドキュメント内の単語の場所をインデックス化するテーブルがあります。セット内で最も一般的なバイグラムを特定したいと考えています。

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
4

1 に答える 1

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 を実際の単語に逆参照する任意のテーブルに結合を追加することもできます。

于 2009-06-14T11:11:09.293 に答える