2009-06-13 4 views
1

私は、ドキュメントの束の中の単語の位置をインデックスするテーブルを持っています。 私はセット内で最も一般的なバイグラムを特定したいと思います。ロケーションインデックスでのバイグラムの検索

どうすればMSSQL 2008? テーブルには、以下の構造を有する:。私は複雑なのいくつかの種類をジョインをやろうとしている...と私はちょうどで私の頭をやっていることについて考えている

LocationID -> DocID -> WordID -> Location 

は、簡単な方法はありますこれをする?

は、私は私の構文がかもしれので、質問でそれをつり上げる

サンプルデータIは、SQLを書いたので、それは年をされている

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

+0

MS SQL 2008 SP1 –

+0

幸運にも私の答えは? – Triptych

答えて

1

するINORDER月曜日に私より良い編集これだと思いますビットオフ。しかし、私は論理が正しいと信じています。

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ことを持っているものは何でもテーブルへの結合を追加することができます。

+0

私はCONCATに区切り記号を追加します、あなたは1,2,3のようになりたくありません –

+0

@オサマ - 良い点 - 追加1インチ – Triptych

関連する問題