2009-06-13 5 views
1

문서 묶음의 단어 위치를 색인화하는 표가 있습니다. 세트에서 가장 일반적인 bigram을 식별하고 싶습니다.위치 색인에서 bigram 찾기

어떻게 하시겠습니까? MSSQL 2008? 테이블의 구조는 다음과 같습니다

LocationID -> DocID -> WordID -> Location 

나는 복잡한 어떤 종류의 일을하려고에 대해 생각하는 것은 참여 ... 그리고 난 그냥 내 머리를하고있어

는 간단한 방법이있다. 이러는거야?

나는 내 구문이 될 수 있도록, 질문에 그것을 범프

샘플 데이터 나 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에 구분 기호를 추가하면 12,3이 1,23과 같지 않아야합니다. –

+0

@ 오사마 - 좋은 지적 - 추가됨 1 인치 – Triptych