반응형

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

5.1.11 InsertPostedUrl 저장 프로시저

5.1.11 InsertPostedUrl 저장 프로시저 이번에는 수집한 웹 페이지를 추가하는 프로시저를 만듭시다. 이름은 InsertPostedUrl로 할게요. 입력 인자로 웹 페이지 주소, 요청한 원래 주소, Seed 사이트에서의 상대적 깊이, 수집 시각, 웹 페이지 내용과 제목이 필요합니다. 그리고 insert 쿼리문을 이용하여 PostedUrlTable에 추가합니다. insert into PostedUrlTable values (@Url,@OriginUrl,@Depth,@PostedTime,@PostedContent,@Title) ▷ InsertPostedUrl 저장 프로시저

5.1.10 UpdatePostedUrl 저장 프로시저

5.1.10 UpdatePostedUrl 저장 프로시저 웹 로봇으로 웹 페이지를 수집하면 DBM ForAll에게 DBMS에 저장할 것을 요청합니다. 이와 같은 내용은 StorePostedUrl 시퀀스 다이어그램을 보면 알 수 있습니다. 그리고 시퀀스 다이어그램을 보면 DBM ForAll은 AddPostedUrl 저장 프로시저를 사용하기로 약속하였습니다. 그리고 수집한 페이지 내부에 링크를 다시 수집 대상 후보 사이트로 추가하는 부분이 있는데 앞에서 작성한 AddSeedSite 저장 프로시저를 이용하면 되므로 추가로 작성할 필요가 없습니다. 수집한 웹 페이지 정보를 추가할 때는 이미 수집한 웹 페이지인지 확인할 필요가 있습니다. 만약 이미 수집한 웹 페이지라면 내용을 변경하고 그렇지 않으면 추가하면 되겠죠..

5.1.9 GetFrontCandidate 저장 프로시저

5.1.9 GetFrontCandidate 저장 프로시저 CandidateTable의 맨 앞에 있는 요소 정보를 얻어오는 저장 프로시저를 만듭시다. 저장 프로시저 이름은 GetFrontCandidate로 결정할게요. 인자는 OUTPUT 유형으로 수집 후보 페이지 주소와 Seed 사이트에서의 상대적 깊이를 선언합니다. 그리고 수집 후보 대상이 없을 수도 있으니 이를 확인하는 인자도 선언합니다. CREATE PROCEDURE dbo.GetFrontCandidate ( @Url varchar(200) OUTPUT, @Depth int OUTPUT, @Getted int OUTPUT ) 먼저 CandidateTable에 항목 개수를 얻어옵니다. 항목 개수를 얻어오기 위해 변수 선언이 필요하고 GetCountCa..

5.1.8 RemoveCandidate 저장 프로시저

5.1.8 RemoveCandidate 저장 프로시저 CandidateTable에 있는 특정 항목을 제거하는 저장 프로시저를 만들어 봅시다. 저장 프로시저 이름은 RemoveCandidate로 할게요. 입력 인자로 삭제할 항목 번호를 받습니다.CREATE PROCEDURE dbo.RemoveCandidate ( @SeqNo int ) delete 쿼리문을 이용하여 입력 인자로 전달받은 SeqNo 값을 갖는 항목을 삭제합니다.delete from CandidateTablewhere SeqNo = @SeqNo ▷ RemoveCandidate 저장 프로시저

5.1.7 GetCandidateBySeqNo 저장 프로시저

5.1.7 GetCandidateBySeqNo 저장 프로시저 CandidateTable에서 특정 일련 번호의 항목을 얻어오는 저장 프로시저를 만듭시다. 저장 프로시저 이름은 GetCandidateBySeqNo으로 정할게요. 입력 인자로 일련 번호를 받고 OUTPUT 유형의 인자로 페이지 주소와 Seed 사이트에서의 상대적 깊이를 선언합니다. CREATE PROCEDURE dbo.GetCandidateBySeqNo ( @SeqNo int, @Url varchar(200) OUTPUT, @Depth int OUTPUT ) select문을 이용하여 CandidateTable에서 입력 인자로 받은 일련 번호와 같은 항목의 정보를 OUTPUT 유형의 인자에 설정합니다. select @Url=Url, @Depth=..

5.1.6 GetMinSeqNo 저장 프로시저

5.1.6 GetMinSeqNo 저장 프로시저 이번에는 CandidateTable에서 일련 번호가 가장 작은 값을 얻어오는 저장 프로시저를 만듭시다. 저장 프로시저 이름은 GetMinSeqNo라고 할게요. 인자로 OUTPUT 형태의 가장 작은 값을 설정하기 위한 SeqNo인자를 선언합시다. CREATE PROCEDURE dbo.GetMinSeqNo ( @SeqNo int OUTPUT ) CandidateTable에서 SeqNo의 최소값을 얻어와 변수 SeqNo에 설정합니다. set @SeqNo = (select min(SeqNo) from CandidateTable ) 그런데 CandidateTable에 항목이 비어 있다면 변수 SeqNo에는 null 상태가 됩니다. 이럴 떄는 변수 SeqNo 값을 -1..

5.1.5 GetCountCandidate 저장 프로시저

5.1.5 GetCountCandidate 저장 프로시저 웹 로봇은 웹 페이지를 수집하려면 먼저 수집해야 할 후보 사이트를 얻어와야 합니다. 이 부분은 CollectWeb 시퀀스 다이어그램에서 약속하였습니다. 약속한 문서를 보면 GetFrontCandidate 저장 프로시저를 이용하여 CandidateTable에 저장한 후보 사이트 중에 맨 앞의 항목을 얻어오게 약속하였습니다. 이를 효과적으로 사용할 수 있게 CandidateTable에는 후보 사이트를 추가할 때 일련 번호를 자동으로 부여하게 테이블을 설계했어요. GetFrontCandidate 저장 프로시저에서는 일련 번호가 가장 작은 항목을 얻어오고 해당 항목을 삭제하면 되겠죠. 이를 위해 CandidateTable에서 일련 번호가 가장 작은 번호를..

5.1.4 AddCandidate 저장 프로시저

5.1.4 AddCandidate 저장 프로시저 이제 수집 대상 페이지 주소를 추가하는 AddCandidate 저장 프로시저를 만듭시다. 입력 인자로 수집 대상 페이지 주소와 Seed 사이트에서의 상대적 깊이를 인자로 받습니다. CREATE PROCEDURE dbo.AddCandidate ( @Url varchar(200), @Depth int ) 그리고 저장 프로시저에서는 NeedCollectUrl 저장 프로시저를 이용하여 수집이 필요한 페이지인지 확인하여 필요하면 CandidateTable에 추가합니다. Declare @Need int Exec NeedCollectUrl @Url, @Need OUTPUT if @Need = 1 begin insert into CandidateTable values(@..

5.1.3 NeedCollectUrl 저장 프로시저

5.1.3 NeedCollectUrl 저장 프로시저 이번에는 수집할 필요가 있는 페이지인지 확인하는 NeedCollectUrl 저장 프로시저를 만듭시다. 입력 인자로 페이지 주소와 OUTPUT 유형으로 수집할 필요가 있는지 여부를 결정하는 인자가 필요하겠죠.CREATE PROCEDURE dbo.NeedCollectUrl ( @Url varchar(200), @Need int OUTPUT ) 저장 프로시저의 알고리즘은 이미 작성한 ExistedCandidate 저장 프로시저를 이용해 존재하는 페이지 주소인지 확인합니다. 존재 여부를 확인하기 위한 변수를 선언해야겠죠.Declare @Existed intExec ExistedCandidate @Url, @Existed OUTPUT 만약 존재하지 않으면 Exi..

5.1.2 ExistedPostedUrl 저장 프로시저

5.1.2 ExistedPostedUrl 저장 프로시저 이번에는 이미 수집한 페이지인지 확인하는 저장 프로시저를 만들어 봅시다. 저장 프로시저 이름은 ExistedPostedUrl로 합시다. 입력 인자로 페이지 주소를 받고 OUTPUT 유형의 인자로 존재 여부가 필요합니다. CREATE PROCEDURE dbo.ExistedPostedUrl ( @Url varchar(200), @Existed int OUTPUT ) 저장 프로시저 내부에서는 PostedUrlTable에 입력 인자로 받은 Url이 있는지 확인한 결과를 존재 여부를 결정하는 인자에 설정합니다. 앞에서 작성한 ExistedCandidate 저장 프로시저와 테이블 이름만 차이가 있어 하나의 저장 프로시저로 일반화할 수 있지만 여기에서는 일반화하..

반응형