반응형

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

11. 2 웹 검색 엔진 관리자 응용 만들기

11. 2 웹 검색 엔진 관리자 응용 만들기 이번에는 관리자 응용을 만듭시다. 관리자 응용은 Windows Form 형태의 응용 프로그램으로 WSEManager 이름으로 만듭시다. 관리자 응용에서 제공할 기능은 다음과 같습니다. 검색 서비스가 잘 동작하는지 확인할 수 있다. 웹 로봇을 설정할 수 있다. 수집 결과에 관한 상태 모니터링을 할 수 있다. 사이트로 탐색할 수 있다. 관리자 응용은 프로핑 단계에서 작성한 WSEManager 응용 프로그램 프로토 타이핑과 기본적인 구조는 유사합니다. 여기에서는 프로토 타이핑에서 구현하지 않았던 세부 기능을 구현할 것입니다. 11.2.1 폼 디자인 관리자 응용은 MainForm과 EHBrowser를 만들어서 사용할게요. MainForm은 관리자가 검색 서비스 동작 ..

11. 웹 검색 응용 만들기

11. 웹 검색 응용 만들기 이제 최종 사용자가 사용하는 검색 응용인 EH와 관리자가 사용할 응용인 WSE Manager를 만듭시다. 11.1 검색 응용 만들기 EH 검색 응용은 최종 사용자가 검색 서비스를 이용하는 Windows Form 응용입니다. 검색 질의문을 입력하여 검색 요청하면 검색 결과를 확인할 수 있고 검색 결과의 웹 페이지로 쉽게 이동할 수 있는 프로그램입니다. [그림 11.1] EH 실행 화면 EH 응용의 실행 화면은 [그림 11.1]과 같습니다. [그림 11.1]의 1은 검색 결과 목록을 보여주는 컨트롤이며 2는 검색 결과 하나를 보여주는 컨트롤입니다. 이 부분은 관리자가 사용하는 WSE Manager 응용에서도 사용할 것으로 사용자 정의 컨트롤로 만들 것입니다. 개발 순서는 검색 결..

10. 검색 서비스 만들기

10. 검색 서비스 만들기 이번에는 랭커 라이브러를 이용하여 검색 서비스를 만듭시다. 아키텍쳐링 단계에서 검색 서비스는 웹 서비스로 약속하였는데 여기에서는 .NET 리모팅 서비스로 만들게요. .NET 리모팅 서비스를 만들려면 먼저 리모팅 서버와 리모팅 클라이언트에서 공통으로 참조하는 라이브러리가 필요합니다. 따라서 여기에서는 공통으로 참조하는 라이브러리 작성 후에 리모팅 서버를 작성하고 이를 사용하는 클라이언트 예광탄을 만듭시다. 10.1 공통 라이브러리 만들기 검색 서비스와 클라이언트에서 사용할 공통 라이브러리를 만듭시다. 공통 라이브러리 이름은 GenericSearchLib라고 할게요. 공통 라이브러리로 랭커 라이브러리를 직접 사용하는 것은 클라이언트 측에 주요 라이브러리를 배포하는 결과를 초래하므로..

9. 2 랭커 라이브러리 만들기

9. 2 랭커 라이브러리 만들기 이제 랭커 라이브러리를 만듭시다. 랭커 클래스도 내부에 개체의 상태를 기억할 것이 없으므로 정적 클래스로 정의할게요. public static class Ranker 검색 요청 메서드를 작성합시다. 검색 요청 메서드는 검색 질의를 입력 인자로 받아 검색 후에 순위를 부여하여 순위화 한 결과 목록을 반환합니다. public static List Request(string query) 결과를 보관할 컬렉션 개체를 생성합니다. List result = new List(); 검색 질의를 형태소 분석합니다. int total_count = 0; List list = null; list = MorphemeParser.Parse(query); total_count = list.Coun..

9. 랭커 만들기

9. 랭커 만들기 랭커는 검색 요청이 오면 검색 질의에 근접한 웹 페이지를 순위화 해주는 엔진입니다. 여기에서는 라이브러리 형태로 제작할 것입니다. 수 많은 자료 중에서 원하는 결과를 검색하면 검색 결과도 많을 수 있습니다. 이 때 사용자는 검색 결과에서 다시 원하는 결과를 검색하는 비용이 들 수 있습니다. 자료의 양이 많아지면서 검색 엔진도 보다 효과적으로 검색 결과를 제공하기 위해 똑똑해지고 있습니다. 이를 위해 시멘틱 처리의 알고리즘이 필요한데 여기서 다루는 랭커는 시멘틱 처리를 하는 기본적인 알고리즘을 사용할 것입니다. 랭커에서 순위를 매기는 방법은 다양한데 여기에서는 TF IDF 방식을 사용할 것입니다. TF는 Term Frequency의 약어로 특정 단어가 얼마나 자주 나오는지에 관한 값입니다..

8. 역 파일 생성기 만들기

8. 역 파일 생성기 만들기 역 파일 생성기는 검색 효율을 높이기 위해 형태소 이름으로 포함하는 웹 페이지를 빠르게 검색할 수 있는 역 파일을 생성하는 엔진입니다. 역 파일 생성기는 웹 로봇에서 수집한 내용을 형태소 분석기로 분석한 결과를 역 파일 목록에 추가하는 작업을 수행합니다. 역 파일 목록에 추가하는 작업에서는 새로운 형태소를 발견하면 역 파일 목록에 형태소를 추가하고 추가한 형태소마다 테이블을 동적으로 생성합니다. 그리고 생성한 동적 테이블에 웹 페이지 주소와 참조 개수를 추가합니다. 대부분의 이를 수행할 수 있는 작업은 저장 프로시저로 만들었습니다. 여기에서는 미리 작성한 저장 프로시저를 이용하는 역 파일 생성기를 만듭시다. 역 파일 생성기에서는 검색 질의 내용에 포함한 형태소 이름으로 포함하..

7. 형태소 분석기 만들기

7. 형태소 분석기 만들기 이번에는 문자열의 내용을 분석하는 형태소 분석기를 만들어봅시다. 형태소 분석기는 원본 내용을 형태소 단위로 분할하는 엔진입니다. 형태소 분석기는 웹 검색 엔진의 일부로 웹 로봇이 수집한 페이지의 내용을 분석하거나 검색 질의를 분석할 때 사용합니다. 형태소 분석기도 라이브러리로 만들기로 했는데 여기에서는 라이브러리 작성과 함께 정상적으로 만들어졌는지 확인하는 예광탄도 만듭시다. 7.1 형태소 분석기 예광탄 만들기 [그림 7.1] 형태소 분석기 메인 폼 자식 컨트롤 배치 using System; using System.Collections.Generic; using System.Windows.Forms; using WSE_Core; using MorphemeParserLib; na..

6.4.3 WebRobot 서비스 테스트 클라이언트 만들기

6.4.3 WebRobot 서비스 테스트 클라이언트 만들기 설치한 웹 로봇 서비스가 잘 동작하는지 확인하기 위해 테스트 클라이언트를 만들어 봅시다. 테스트 클라이언트는 윈도우즈 폼 응용으로 만듭시다. 그리고 메인 폼에서 수집 가동을 시작하거나 멈추게 할 수 있고 수집 주기를 설정하고 Seed 사이트를 추가하는 등의 작업을 할 수 있게 컨트롤을 배치하세요. [그림 6.7] 웹 수집 로봇 테스트 클라이언트 메인 폼 컨트롤 배치 /// /// Seed 사이트 목록 가져오기 메서드 /// /// Seed 사이트 목록 public static List GetSeedSite() { List list = new List(); SqlCommand scom = MakeSPCommand( "Select Url From C..

6.4.2 WebRobot 서비스 만들기

6.4.2 WebRobot 서비스 만들기 WebRobot 서비스는 윈도우즈 서비스로 만들게요. Windows 서비스 프로젝트를 추가하세요. 여기서는 WebRobotSVC라 정할게요. 디자인 창에서 마우스 우측 버튼 클릭 시 나오는 컨텍스트 메뉴에서 설치 관리자를 추가하세요. [그림 6.3] 설치 관리자 추가화면 그리고 서비스 프로세스 인스톨러의 속성 중에 Accout를 LocalService로 설정합니다. 이는 윈도우즈 서비스를 등록할 계정을 설정하는 것입니다. 그리고 서비스 인스털러 속성 창에서 서비스 이름과 설명 및 화면 표시 이름을 설정하세요. StartType은 관리 도구의 서비스를 이용하여 변경할 수 있으므로 여기에서는 디폴트 값인 Manual로 할게요. [그림 6.4] 서비스 인스톨러 속성 창..

6. 4 웹 로봇 서비스 만들기

6. 4 웹 로봇 서비스 만들기 웹 로봇은 독립적으로 수행이 가능한 서비스입니다. 또한 웹 로봇은 관리자가 설정에 사용하는 WSE Manager로 수집 주기 설정 및 Seed 사이트 등록과 웹 수집 가동 시작과 멈춤을 제어할 수 있어야 합니다. 여기에서는 웹 로봇을 .NET 리모팅 서비스를 윈도우 서비스 형태로 만들기로 할게요. 6.4.1 Generic 라이브러리 만들기 .NET 리모팅 서비스를 제공할 때는 서비스 측과 클라이언트 측에서 공통으로 사용하는 라이브러리가 필요합니다. GenericWebRobotLib 이름의 클래스 라이브러리 프로젝트를 추가합시다. .NET 리모팅 서비스에서 제공하는 클래스는 MashalByRefObject를 파생한 형식이어야 합니다. public class GenericWe..

반응형