빅데이터/빅데이터 with python

[빅데이터 python] 웹 검색 엔진 만들기 - 2. 형태소 및 Inverse 테이블 정의

언제나휴일 2020. 11. 17. 09:40
반응형

안녕하세요. 언제나휴일입니다.

 

앞에서 수집할 웹 페이지 후보 테이블(Candidate)와 수집한 웹 페이지 테이블(WebPage)을 만들었어요.

[빅데이터/빅데이터 with python] - [빅데이터 python] 웹 수집 로봇 만들기 - 1. 테이블 정의

Candidate 테이블
WebPage 테이블

1. Morpheme - 형태소 테이블 만들기

Morpheme 테이블

CREATE TABLE [dbo].[Morpheme] (
    [mid]  INT          IDENTITY (1, 1) NOT NULL,
    [word] VARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([mid] ASC),
    CONSTRAINT [WU] UNIQUE NONCLUSTERED ([word] ASC)
);

형태소 테이블에는 형태소(word)와 일련 번호(mid)를 멤버로 갖습니다. 

일련 번호를 주요 키로 설정하고 형태소는 유일하게 제약 조건을 추가하였습니다.

 

2. Inverse - 역(파일) 테이블 만들기

수집한 웹 페이지가 많아지면 검색 질의를 모든 웹 페이지 내용과 비교하는 것은 매우 많은 시간을 요구합니다. 짧은 시간에 검색이 가능하게 하기 위해 질의에 있는 단어에 해당하는 형태소 테이블의 mid를 구합니다. 그리고 Inverse 테이블에 mid로 어느 웹 페이지(wid)에 있는지 확인합니다.

이처럼 포함하는 웹 페이지의 내용과 비교하여 검색하는 것이 아니라, 단어에서부터 어느 웹 페이지에 해당 단어가 있는지 검색하여 역파일이라고 부릅니다.

Inverse 테이블

CREATE TABLE [dbo].[Inverse] (
    [wid]  INT NOT NULL,
    [mid]  INT NOT NULL,
    [rcnt] INT NOT NULL,
    CONSTRAINT [FK_Inverse_News] FOREIGN KEY ([wid]) REFERENCES [dbo].[WebPage] ([wid]),
    CONSTRAINT [FK_Inverse_Morpheme] FOREIGN KEY ([mid]) REFERENCES [dbo].[Morpheme] ([mid])
);

역파일 테이블에는 형태소 일련 번호(mid), 웹 페이지 일련 번호(wid)를 갖습니다. 이는 외래키로 관계를 설정합니다.

그리고 웹 페이지 내에 해당 형태소가 몇 번 나오는 지 참조 개수(rcnt)를 멤버로 갖습니다.

반응형