3. 3 DB 설계
일반적으로 아키텍쳐링 단계에서 DB설계를 진행합니다. 여기에서도 시퀀스 다이어그램을 통해 DBMS에 관리해야 할 것들이 무엇인지를 분석하여 DB 설계합시다.
3.3.1 웹로봇에서 수집해야 할 대상
웹 로봇에서는 관리자에 의해 Seed 사이트를 추가하면 이를 수집해야 할 대상으로 등록합니다. 그리고 웹 로봇은 주기적으로 수집해야 할 대상을 얻어와서 웹 페이지를 수집한 이후에 수집한 웹 페이지에 있는 링크를 다시 수집해야 할 대상으로 등록합니다. 여기에서는 Seed 사이트에서 특정 depth 내에 있는 웹 페이지를 수집할 수 있게 합시다.
이와 같은 정보를 반영하여 CandidateTable을 만들기로 합시다. 테이블의 컬럼에는 사이트 주소와 Seed 사이트에서의 상대적 깊이가 있어야겠죠. 그리고 수집해야 할 대상들을 순차적으로 일련 번호를 부여하기로 할게요.
[그림 3.16]처럼 Url을 Primary Key로 선정하였고 그림에는 나타나지 않았지만 SeqNo 속성으로 ID 사용을 true로 하고 Seed와 Step을 1로 합시다.
참고로 테이블 다이어그램은 Microsoft Visual Studio .NET에서 제공하는 기능입니다.
[그림 3.16] CandidateTable 다이어그램
3.3.2 수집한 웹 페이지
수집한 웹 페이지의 기본 정보를 저장하는 PostedUrlTable을 만들어 봅시다.
테이블의 항목에는 웹 페이지 주소와 원래 요청한 페이지 주소, Seed 사이트에서의 상대적 깊이, 수집한 날짜, 수집한 내용, 제목을 추가합니다. 그리고 Primary Key로 웹 페이지 주소를 선정합시다.
웹 페이지 주소와 원래 요청한 페이지 주소는 대부분 일치하지만 프레임 형태로 되어 있는 웹 페이지는 요청한 주소와 수집한 주소가 다를 수 있습니다.
그리고 여러분께서 웹 로봇의 품질 수준을 높이길 원하시면 수집한 날짜가 오래되면 다시 수집 대상에 포함시키는 작업을 추가할 수 있습니다. 여기에서는 이 작업은 수행하지 않겠습니다.
[그림 3.17] PostedUrlTable 다이어그램
3.3.3 수집한 웹 페이지에 있는 형태소
수집한 웹 페이지의 내용은 형태소 분석기를 이용하여 포함하는 형태소를 분석합니다. 이들의 정보는 검색 요청이 오면 빠른 검색을 위해 사용하고 또한 랭커에 의해 순위화할 때도 사용합니다.
먼저 수집한 웹 페이지에 존재하는 모든 형태소의 개수를 기억하는 MCountUrlTable을 만듭시다. 이 부분은 TF(페이지 내에 특정 형태소의 빈도수)값을 계산하기 위해 페이지 내의 형태소 개수를 기록해 놓는 것입니다.
MCountUrlTable에는 웹 페이지 주소와 페이지 내의 형태소 개수를 기억하는 열을 추가합니다. 그리고 Url을 Primary Key로 설정하세요.
[그림 3.18] MCountUrlTable 다이어그램
그리고 수집한 웹 페이지에 포함한 형태소를 기억하는 역 파일 테이블이 필요합니다. 이것을 통해 검색 요청이 오면 빠르게 특정 형태소를 포함하고 있는 웹 사이트를 찾는데 사용합니다.
기본적으로 형태소 이름과 인덱스를 열로 하는 IndexInvFileTable에 이 정보를 저장합니다.
[그림 3.19] IndexInvFileTable 다이어그램
그리고 새로운 형태소를 만나면 MTB_와 형태소의 일련 번호의 조합으로 테이블을 동적으로 추가합니다. 동적으로 생성한 테이블에는 웹 페이지 주소와 해당 형태소를 몇 번 참조하는지 개수를 저장합니다.
이 정보도 형태소 분석기에서 분석한 내용을 역 파일 생성기에서 저장하며 랭커에 의해 TF값을 계산할 때 사용합니다. [그림 3.20]은 동적으로 생성하는 테이블의 프로토 타입입니다.
[그림 3.20] MTB_Prototype 다이어그램
'프로그래밍 기술 > 웹 검색 엔진 만들기' 카테고리의 다른 글
4. 2 PostedUrl (수집한 사이트)클래스 구현 (0) | 2017.12.06 |
---|---|
4. 1 Candidate(수집 후보 사이트) 클래스 구현 (0) | 2017.12.06 |
4. WSE Core 설계 및 구현 (0) | 2017.12.06 |
3.4.2 WSEManager 응용 프로토 타이핑 (0) | 2017.12.06 |
3. 4 프로토 타이핑 (0) | 2017.12.06 |
3. 2 시퀀스 다이어그램 (0) | 2017.12.05 |
3. 1 컴포넌트 다이어그램 (0) | 2017.12.05 |
3. 아키텍쳐링 (0) | 2017.12.05 |
2. 요구 분석 및 정의 (0) | 2017.12.05 |
1. 7 .NET 리모팅 (0) | 2017.12.05 |