반응형

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

6. 3 웹 로봇 예광탄 구현

6. 3 웹 로봇 예광탄 구현 Main 폼에 웹 수집기 개체를 참조하는 멤버 필드를 선언합니다. WebCollect wc = null; Main 폼에 Load 이벤트 핸들러를 추가합니다. private void MainForm_Load(object sender, EventArgs e) Main 폼이 로드할 때 웹 수집기 개체를 생성하고 수집 대상 사이트 목록을 갱신하는 작업을 수행합니다. wc = new WebCollect(); UpdateCandidate(); 그리고 웹 페이지 수집 이벤트 핸들러를 추가합니다. wc.WebPosted += new WebPostedEventHandler(wc_WebPosted); 수집 대상 사이트 목록을 갱신하는 메서드를 작성합시다. private void UpdateC..

6.2.5 WebPostedEventArgs 구현

6.2.5 WebPostedEventArgs 구현 웹 페이지 수집 요청의 결과를 통보하는 방법은 이벤트 방식을 사용합시다. 이를 위해 웹 페이지 수집 결과를 인자로 하는 대리자를 정의합니다. 이벤트 방식을 사용하는 대리자는 일반적인 이벤트 핸들러의 구조를 사용합시다. 일반적으로 이벤트 핸들러는 이벤트를 발생한 개체와 이벤트를 처리하기 위해 필요한 인자를 받습니다. 따라서 여기에서도 이벤트를 발생한 개체와 이벤트를 처리하기 위한 인자를 입력 인자로 받는 대리자를 정의합시다. public delegate void WebPostedEventHandler(object sendor,WebPostedEventArgs e); 웹 페이지 수집 결과 이벤트 인자 형식을 정의합시다. public class WebPoste..

6.2.4 RawPostedPage 구현

6.2.4 RawPostedPage 구현 이번에는 수집한 원본 페이지 개체 클래스인 RawPostedPage 클래스를 구현합시다. 수집한 페이지 개체 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합시다. public PostedUrl PostedPage { get; private set; } 편의를 위해 웹 페이지 주소 가져오기 속성을 제공합시다. public string Url { get { return PostedPage.Url; } } 수집한 페이지 내부의 링크 목록 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합니다. public List Links { get; private set; } 생성자 메서드에서는 입력 인자로 받..

6.2.3 RawUrl 구현

6.2.3 RawUrl 구현 이번에는 수집 결과 형식인 RawUrl 클래스를 구현합시다. 수집 대상 개체를 가져오기 속성을 제공합니다. 설정하기는 내부에서만 사용할 수 있게 제공합니다. public Candidate CD { get; private set; } 수집 대상 개체를 수집한 결과 페이지 목록을 가져오기 속성을 제공합니다. 요청한 웹 페이지가 프레임 형태일 때는 수집 결과 페이지가 여러 개가 발생할 수 있어서 목록을 멤버로 설정하는 것입니다. 여기에서도 설정하기 속성은 클래스 내부에서만 접근하게 제공합니다. public List PostedPages { get; private set; } 생성자는 수집 대상 개체를 입력 인자로 받는 것을 앞에서 추가하였습니다. public RawUrl(Candi..

6.2.2 WebPageGetter 구현

6.2.2 WebPageGetter 구현 이번에는 웹 페이지를 수집하는 WebPageGetter 클래스를 구현합시다. class WebPageGetter { } 멤버 이벤트로 웹 페이지 수집 완료 이벤트가 필요합니다. 이 부분은 이미 WebCollect에서 설명하였습니다. internal event WebPostedEventHandler WebPosted = null; 웹 페이지를 수집하는 방법은 여러가지 방법이 있는데 여기에서는 WebBrowser 컨트롤을 사용할게요. 이를 위해 Windows.Windows.Forms.dll을 참조 추가가 필요합니다. 멤버 필드로 웹 페이지 수집에 필요한 WebBrowser 개체를 생성합시다. WebBrowser wb = new WebBrowser(); 수집 결과를 표..

6.2.1 WebCollect 구현

6.2.1 WebCollect 구현 이제 웹 로봇 라이브러리에 필요한 형식을 구현합시다. 먼저 관리자 응용인 WSE Manager로 웹 수집을 가동하거나 멈추게 하거나 수집 주기 등을 설정할 때 사용하는 WebCollect 형식부터 구현합시다. public class WebCollect WebCollect에서는 수집 주기와 상대적 깊이, 주기적인 수집을 위한 타이머가 필요합니다. 수집 주기의 최소값과 상대적 깊이의 최대값을 상수로 정의합니다. 그리고 타이머 개체를 참조할 멤버 필드를 선언하고 상대적 깊이를 설정할 멤버 필드를 선언합니다. 상대적 깊이의 초기값은 상수로 정의한 최대값으로 설정할게요. public const int min_interval = 5000; public const int max_d..

6. 2 웹 로봇 설계 및 구현

6. 2 웹 로봇 설계 및 구현 웹 로봇 예광탄 작성에 앞서 웹 로봇 라이브러리에 필요한 형식을 역할에 맞게 설계를 먼저 합시다. 참고로 설계 및 구현의 결과로 보여주는 소스 파일은 웹 로봇 라이브러리 소스 파일입니다. 웹 로봇에는 웹 페이지를 수집하는 역할이 있어야 합니다. 웹 로봇에는 수집한 원본이 있어야 합니다. 웹 로봇에는 수집한 사이트와 사이트 내의 링크의 컬렉션을 알아야 다음 수집 대상 사이트를 확장할 수 있습니다. 웹 페이지를 수집 요청을 하였을 때 요청한 작업을 완료하면 수집한 정보를 제공해야 하는데 이 부분은 이벤트 핸들러 형태의 대리자 형식을 정의하고 이벤트 인자를 정의해야 합니다. 관리자의 요청에 따라 이와 같은 작업을 수행할 수 있는 클래스도 정의합시다. [그림 6.2] 웹 로봇 라..

6. 웹 로봇 만들기

6. 웹 로봇 만들기 웹 로봇은 웹 페이지 수집하는 핵심 엔진입니다. 아키텍쳐링 단계에서 약속한 작업을 토대로 웹 로봇을 만들어 봅시다. 웹 로봇을 만드는 과정은 웹 로봇을 구성할 클래스를 조사하는 것부터 시작할게요. 그리고 조사한 클래스 간의 관계를 정의한 후에 구현할게요. 그리고 웹 로봇을 서비스 형태로 만들기로 했는데 이 책에서는 라이브러리로 만들어서 사용할게요. 그리고 이번 장에서는 웹 로봇 라이브러리를 만들기 전에 웹 로봇 예광탄의 화면 구성을 한 후에 라이브러리에 필요한 형식을 정의하고 이를 이용한 예광탄을 작성할게요. 6. 1 웹 로봇 예광탄 만들기 먼저 웹 로봇 예광탄을 윈도우즈 Forms 응용 프로그램으로 작성합시다. 예광탄에서는 다음의 기능을 가능하게 작성해 봅시다. 웹 로봇의 수집을 ..

5. 4 DBM ForSearch 구현

5. 4 DBM ForSearch 구현 이제 검색 요청이 왔을 때 필요한 DBM ForSearch 라이브러리를 구현합시다. 이번에는 Windows Forms 응용 프로그램으로 예광탄을 먼저 만들고 난 후에 라이브러리를 만듭시다. 여기에서는 Search 시퀀스 다이어그램을 살펴보시고 이를 토대로 예광탄을 만들기로 합시다. 5.4.1 DBM ForSearch 예광탄 먼저 Windows Form 응용을 생성하세요. 프로젝트 명은 DBM ForSearch 예광탄으로 할게요. DBM ForSearch 예광탄의 메인 폼의 자식 컨트롤을 배치합시다. 형태소 이름을 입력받아 포함하고 있는 웹 페이지 주소와 참조 개수를 얻어오는 것을 테스트하기 위한 컨트롤들을 배치합니다. 특정 웹 페이지 주소에 포함하고 있는 전체 형태..

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

5. 3 DBM ForSearch에 필요한 저장 프로시저 구현 DBM ForSearch는 웹 검색을 요청했을 때 DBMS에 필요한 정보를 검색할 때 사용하는 라이브러리입니다. 사용자가 EH 응용에게 웹 검색을 요청하거나 관리자가 WSEManager 응용에게 웹 검색을 요청할 수 있습니다. EH 응용과 WSEManager 응용은 검색 요청이 오면 검색 서비스에게 검색을 요청합니다. 검색 서비스는 형태소 분석기를 통해 검색 질의에 있는 형태소를 분석합니다. 그리고 분석한 형태소 별로 DBM ForSearch 라이브러리를 이용하여 행태소를 포함하고 있는 페이지를 검색 요청합니다. DBM ForSearch 라이브러리는 저장 프로시저와 쿼리문을 이용하여 역 파일 요소에 형태소가 있는지 확인하고 형태소를 포함하는 ..

반응형