프로그래밍 기술/웹 검색 엔진 만들기

5. 3 DBM ForSearch에 필요한 저장 프로시저 구현

언제나휴일 2017. 12. 7. 09:01
반응형

5. 3 DBM ForSearch에 필요한 저장 프로시저 구현


 

 DBM ForSearch는 웹 검색을 요청했을 때 DBMS에 필요한 정보를 검색할 때 사용하는 라이브러리입니다.

 

 사용자가 EH 응용에게 웹 검색을 요청하거나 관리자가 WSEManager 응용에게 웹 검색을 요청할 수 있습니다. EH 응용과 WSEManager 응용은 검색 요청이 오면 검색 서비스에게 검색을 요청합니다.

 

 검색 서비스는 형태소 분석기를 통해 검색 질의에 있는 형태소를 분석합니다. 그리고 분석한 형태소 별로 DBM ForSearch 라이브러리를 이용하여 행태소를 포함하고 있는 페이지를 검색 요청합니다. DBM ForSearch 라이브러리는 저장 프로시저와 쿼리문을 이용하여 역 파일 요소에 형태소가 있는지 확인하고 형태소를 포함하는 웹 페이지를 조사합니다. 그리고 웹 페이지에 해당 형태소의 참조 개수와 전체 형태소 개수를 얻어옵니다.

 

 이와 같은 과정을 거쳐 검색 서비스는 랭커에게 검색 결과를 랭킹을 부여하여 요청한 응용에게 순위화한 페이지를 검색 결과로 반환합니다.

 

 여기에서는 저장 프로시저와 쿼리문을 이용하여 역 파일 요소에 형태소가 있는지 확인하고 형태소를 포함하는 웹 페이지 조사 및 참조 개수, 전체 형태소 개수를 구하는 기능을 제공하는 DBM ForSearch 라이브러리를 작성할 것입니다. 그리고 DBM ForSearch 라이브러리에서 사용할 저장 프로시저도 작성합니다.

 

 먼저 DBM ForSearch 라이브러리에서 사용할 저장 프로시저를 구현합시다.

 

5.3.1 GetMorphCountInUrl 저장 프로시저

 

 DBM ForSearch 라이브러리에서는 특정 웹 사이트의 전체 형태소 개수를 구할 수 있어야 합니다. 이는 랭킹을 부여할 때 특정 웹 사이트에 형태소의 참조 개수와 전체 형태소 개수의 비율로 TF(Term Frequency)값을 산정하는데 사용합니다. 특정 웹 사이트의 전체 형태소 개수를 구하는 저장 프로시저를 GetMorphCountInUrl이라 정합시다. 저장 프로시저의 인자에는 입력 인자로 사이트 주소가 필요하고 OUTPUT유형의 전체 형태소 개수가 필요합니다.

CREATE PROCEDURE dbo.GetMorphCountInUrl

    (

    @Url varchar(200),

    @Cnt int OUTPUT

    )

 

 웹 사이트 주소와 전체 형태소 개수를 저장하고 있는 MCountUrlTable에서 형태소 개수를 얻어와서 OUTPUT 형태의 인자 @Cnt에 설정합니다.

set @Cnt = 0

SELECT @Cnt=MCount

FROM MCountUrlTable

WHERE Url=@Url

 

GetMorphCountInUrl 저장 프로시저

CREATE PROCEDURE dbo.GetMorphCountInUrl

    (

    @Url varchar(200),

    @Cnt int OUTPUT

    )

AS

    set @Cnt = 0

    SELECT @Cnt=MCount 

    FROM MCountUrlTable

    WHERE Url=@Url

RETURN

 

5.3.2 GetPostedUrlCount 저장 프로시저

 

 랭커는 검색 결과의 순위를 부여할 때 TF(Term Frequecy, 형태소가 페이지에 발생하는 비율)값 외에도 DF(Document Frequency, 전체 페이지 중에 해당 형태소를 포함하는 페이지 비율)도 필요합니다.

 

 이번에는 수집한 전체 페이지 수를 구하는 프로시저를 GetPostedUrlCount 이름으로 만들어 봅시다. 인자로 OUTPUT 유형의 전체 페이지 수가 필요합니다.

CREATE PROCEDURE dbo.GetPostedUrlCount

    (

    @Cnt int OUTPUT

    )

 

 MCountUrlTable의 전체 항목 개수를 @Cnt에 설정합니다.

set @Cnt = (SELECT count(*) FROM MCountUrlTable)

 

GetPostedUrlCount저장 프로시저

CREATE PROCEDURE dbo.GetPostedUrlCount

    (

    @Cnt int OUTPUT

    )

AS

set @Cnt = (SELECT count(*) FROM MCountUrlTable)

RETURN

 

 작성한 저장 프로시저가 정상적으로 동작하는지 테스트하는 것을 잊지 마세요.

 

5.3.3 GetPostedUrl 저장 프로시저

 

 이번에는 웹 페이지 주소를 가지고 수집한 웹 페이지 정보를 얻어오는 저장 프로시저를 만듭시다.

 

 저장 프로시저 이름은 GetPostedUrl이라 하고 입력 인자로 웹 페이지 주소와 OUTPUT 유형의 인자로 원래 요청한 주소, 상대적 깊이, 수집한 시간, 내용, 제목을 선언합니다.

CREATE PROCEDURE dbo.GetPostedUrl

    (

    @Url varchar(200),

    @OriginUrl varchar(200) OUTPUT,

    @Depth int OUTPUT,

    @PostedTime DateTime OUTPUT,

    @PostedContent varchar(MAXOUTPUT,

    @Title varchar(200) OUTPUT

    )

 

 PostedUrlTable에서 입력받은 웹 페이지 주소와 일치하는 항목의 정보로 OUTPUT 형태의 인자의 값을 설정합니다.

SELECT @OriginUrl=OriginUrl,

              @Depth = Depth,

              @PostedTime = PostedTime,

              @PostedContent = PostedContent,

              @Title = Title

    FROM PostedUrlTable

    WHERE Url=@Url

 

 

GetPostedUrl 저장 프로시저

CREATE PROCEDURE dbo.GetPostedUrl

    (

    @Url varchar(200),

    @OriginUrl varchar(200) OUTPUT,

    @Depth int OUTPUT,

    @PostedTime DateTime OUTPUT,

    @PostedContent varchar(MAXOUTPUT,

    @Title varchar(200) OUTPUT

    )

AS

    SELECT @OriginUrl=OriginUrl,

              @Depth = Depth,

              @PostedTime = PostedTime,

              @PostedContent = PostedContent,

              @Title = Title

    FROM PostedUrlTable

    WHERE Url=@Url

RETURN

 

 이상으로 DBM ForAll 라이브러리 구현과 이에 필요한 저장 프로시저 만들기를 끝냈습니다. 반드시 단위 테스트를 실시하세요.

반응형