반응형

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

5.1.1 ExistedCandidate 저장 프로시저

5.1.1 ExistedCandidate 저장 프로시저 ExistedCandidate 저장 프로시저는 입력 인자로 사이트 주소와 OUTPUT 형태의 인자로 존재 여부가 있습니다. CREATE PROCEDURE dbo.ExistedCandidate ( @Url varchar(200), @Existed int OUTPUT ) 존재하는지 확인은 Select 쿼리문의 결과를 이용합시다. SQL 쿼리문을 사용해 본 적이 없다면 별도의 레퍼런스를 통해 학습이 필요합니다. if exists (select * from CandidateTable where Url=@Url) begin set @Existed = 1 end else begin set @Existed = 0 end 다음은 ExistedCandidate 저장..

5. DBM 설계 및 구현

5. DBM 설계 및 구현 이번에는 DBMS에 정보를 저장하거나 검색할 때 사용하는 컴포넌트를 설계 및 구현합시다. 이와 같은 컴포넌트에는 DBM ForAll과 DBM ForSearch가 있습니다. 이번 작업에서는 DBMS에 자주 사용하는 쿼리를 저장 프로시저 형태로 만드는 작업도 진행합니다. 5.1 DBM ForAll필요한 저장 프로시저 구현 DBM ForAll은 웹 로봇과 형태소 분석기, 역 파일 생성기 등에서 수집 결과나 분석 결과 등을 저장하는 작업을 수행하는 컴포넌트입니다. 검색 서비스에서 검색 결과를 얻어오는 부분은 DBM ForSearch 컴포넌트가 담당하기로 하였습니다. 여기에서는 DBM ForAll 컴포넌트를 설계하고 이를 구현할 것입니다. 그리고 구현에 필요한 저장 프로시저가 있으면 같..

4. 5 RankedUrl 클래스 구현

4. 5 RankedUrl 클래스 구현 검색 요청이 오면 랭커는 검색 결과에 점수를 부여하여 점수 순으로 정렬한 결과 컬렉션을 제공합니다. 이 때 검색 결과를 RankedUrl 형식으로 표현합시다. Search 시퀀스 다이어그램에서 RankedUrl 형식이 있는데 멤버로 수집한 웹 페이지와 점수를 갖고 있어야 합니다. RankedUrl에는 PostedUrl 개체 정보를 멤버 필드로 갖고 멤버 속성으로 이를 참조할 수 있게 제공합시다.PostedUrl postedurl;public PostedUrl PUrl{ get { return postedurl; }} 그리고 웹 사이트 주소를 참조할 수 있는 속성을 제공합시다. 웹 사이트 주소는 따로 기억할 필요는 없습니다. 멤버 개체인 postedurl의 Url 속..

4. 4 InvertedElem 클래스 구현

4. 4 InvertedElem 클래스 구현 역 파일 생성기에 의해 DBMS에 저장한 정보로 사이트 주소와 참조 개수를 멤버로 갖는 역 파일의 항목 형식을 InvertedElem이라 합시다. InvertedElem클래스를 추가하세요. InvertedElem은 형태소 분석기에 의해 분석한 결과로 사이트 주소와 참조 개수를 멤버로 하여 특정 형태소 테이블의 항목으로 저장한 내용을 프로그램 데이터로 가져와 사용하는 형식입니다. 따라서 형태소 분석기에 의해 분석한 결과를 역 파일 생성기에 의해 DBM ForAll에게 저장 요청할 때 사용합니다. 그리고 검색 요청할 때 랭커에 의해 DBM ForSearch에게 검색 질의에 포함한 형태소를 역 파일 테이블에서 포함하는 사이트 주소와 참조 개수를 알아낼 때 결과로 얻..

4. 3 Morpheme 클래스 구현

4. 3 Morpheme 클래스 구현 분석한 형태소를 표현할 Morpheme 클래스를 추가하세요. 분석한 형태소는 형태소 별로 페이지에 나타난 개수를 포함하여 기록합니다. 이는 역 파일 생성기에 의해 DBMS에 저장하며 랭커에 의해 검색 결과를 순위화할 때 사용합니다. MophemeParse와 MakeInvertedFile 시퀀스 다이어그램을 보면 어떠한 멤버가 필요한 지 확인할 수 있습니다. Morpheme 형식에는 형태소 이름과 참조 개수를 멤버 속성으로 추가하고 기본 생성자, 정보를 입력 인자로 받는 생성자를 추가하고 ToString 메서드를 재정의합니다. 마찬가지로 형식과 멤버를 public으로 지정하여 외부에 노출하고 Serializable 특성을 지정합니다. [Serializable]publi..

4. 2 PostedUrl (수집한 사이트)클래스 구현

4. 2 PostedUrl (수집한 사이트)클래스 구현 수집한 웹 페이지 정보를 표현할 PostedUrl 클래스를 추가하세요. 웹 로봇에 의해 수집한 웹 페이지는 DBM ForAll을 통해 수집한 정보를 DBMS에 저장 요청을 합니다. 이 때 사용할 형식이 PostedUrl입니다. StorePostedUrl 시퀀스 다이어그램을 보면 PostedUrl 형식에는 수집한 페이지 주소와 요청한 페이지 주소, 페이지의 내용, Seed 사이트에서의 상대적 깊이, 수집한 DateTime과 페이지 제목이 필요하다는 것을 알 수 있습니다. 이와 같은 멤버를 갖는 PostedUrl 클래스를 작성합시다. 클래스의 노출 수준을 public으로 지정하고 Serializable 특성을 지정합니다.[Serializable]publ..

4. 1 Candidate(수집 후보 사이트) 클래스 구현

4. 1 Candidate(수집 후보 사이트) 클래스 구현 Candidate 클래스를 추가하세요. Candidate 클래스는 수집할 대상 사이트를 표현할 클래스입니다. 먼저 클래스의 노출 수준을 public으로 설정합니다. 라이브러리에 정의한 형식을 다른 곳에서 사용하려면 노출 수준을 public으로 설정해야 합니다. 그리고 서비스에서 직렬화하여 사용할 수도 있으니 Serializable 특성을 지정합시다. [Serializable] public class Candidate{} Candidate 클래스에는 멤버 속성으로 사이트 주소와 Seed 사이트 주소에서의 상대적 깊이를 설정하고 가져오기 가능한 멤버가 필요합니다. 노출 수준을 public으로 지정하여 멤버 속성 Url과 Depth를 추가합니다. 가져..

4. WSE Core 설계 및 구현

4. WSE Core 설계 및 구현 이번에는 EH WSE 솔루션의 여러 컴포넌트에서 공통적으로 사용할 형식들을 제공하는 WSE Core 라이브러리를 설계하고 구현합시다. WebCollect 시퀀스 다이어그램과 NeedGetUrls에서는 수집할 대상 사이트를 얻어오는 부분이 있습니다. 이를 Candidate 형식으로 정의합시다. 웹 로봇은 웹 사이트를 수집하였을 때 이를 DBM ForAll을 통해 DBMS에 저장을 요청합니다. 이를 위해 PostedUrl 형식을 정의합시다. 웹 사이트의 내용이나 검색 질의는 형태소 분석기에 의해 분석하고 이 결과를 사용하여 역 파일을 만드는 작업이나 검색에 사용합니다. 이를 Morpheme 형식으로 정의합시다. 검색 요청 시에 랭커는 검색 결과에 순위를 부여합니다. 이 때..

3.4.2 WSEManager 응용 프로토 타이핑

3.4.2 WSEManager 응용 프로토 타이핑 WSEManager는 관리자가 EH WSE를 구성하고 있는 각 엔진들의 상태를 제어하거나 엔진들에 의해 만들어지는 결과물을 모니터링 할 수 있는 윈도우즈 응용 프로그램입니다. WSEManager에서는 관리자가 Seed 사이트를 추가할 수 있어야 합니다. 그리고 웹 사이트 수집 주기를 설정하고 웹 사이트 수집을 가동하거나 멈출 수 있어야 합니다. 또한 현재까지 수집한 웹 페이지에서 발견한 형태소 목록을 확인할 수 있고 각 형태소를 선택하면 이를 포함하는 웹 페이지 목록을 확인할 수 있게 합시다. 그리고 정상적으로 검색 서비스를 할 수 있는지 확인할 수 있게 합시다. 먼저 WSEManager는 EH 응용처럼 검색할 수 있어야 합니다. 이 부분은 EH 응용 프..

3. 4 프로토 타이핑

3. 4 프로토 타이핑 프로젝트를 수행하다보면 이해 관계자의 요구 사항을 잘못 파악하거나 요구 사항이 바뀔 수 있습니다. 개발 초기에 이를 발견하였다면 큰 비용이 들지 않겠지만 개발 후기에 이를 발견하여 수정하려면 많은 비용이 들 수 있습니다. 이와 같은 부담을 줄이기 위해 이해 관계자의 요구 사항을 제대로 파악했는지 개발 초기에 확인해야 합니다. 그리고 이해 관계자의 요구 사항 중에 바뀔 확률이 높은 부분을 초기 단계에 확인하여 반영하여 전체 개발 비용을 줄일 수 있습니다. 이를 위해 사용자와 상호 작용에 관한 부분을 만들어 확인하는 작업을 프로토 타이핑이라고 합니다. 프로토 타이핑에서는 실제 엔진은 구현하지 않지만 사용자와 상호 작용하는 GUI 부분을 작성하여 이해 관계자의 요구 분석을 제대로 수행했..

반응형