4. 5 RankedUrl 클래스 구현
검색 요청이 오면 랭커는 검색 결과에 점수를 부여하여 점수 순으로 정렬한 결과 컬렉션을 제공합니다. 이 때 검색 결과를 RankedUrl 형식으로 표현합시다.
Search 시퀀스 다이어그램에서 RankedUrl 형식이 있는데 멤버로 수집한 웹 페이지와 점수를 갖고 있어야 합니다.
RankedUrl에는 PostedUrl 개체 정보를 멤버 필드로 갖고 멤버 속성으로 이를 참조할 수 있게 제공합시다.
PostedUrl postedurl;
public PostedUrl PUrl
{
get
{
return postedurl;
}
}
그리고 웹 사이트 주소를 참조할 수 있는 속성을 제공합시다. 웹 사이트 주소는 따로 기억할 필요는 없습니다. 멤버 개체인 postedurl의 Url 속성을 반환합니다. 물론 개체가 없을 때는 string.Empty를 반환합시다.
public string Url
{
get
{
if (postedurl != null)
{
return postedurl.Url;
}
return string.Empty;
}
}
평가 점수를 가져오기와 설정하기가 가능한 속성을 추가하세요. 그리고 기본 생성자와 정보를 입력 인자로 받는 생성자도 추가합시다. 마지막으로 ToString 메서드를 재정의합니다. ToString 메서드에서는 postedurl 개체의 제목을 반환합시다.
▷InvertedElem.cs
using System;
namespace WSE_Core { /// <summary> /// 순위화한 페이지 /// </summary> [Serializable] public class RankedUrl { PostedUrl postedurl; /// <summary> /// 수집한 페이지 /// 가져오기 /// </summary> public PostedUrl PUrl { get { return postedurl; } }
/// <summary> /// 사이트 주소 /// 가져오기 /// </summary> public string Url { get { if (postedurl != null) { return postedurl.Url; } return string.Empty; } }
/// <summary> /// 평가 점수 /// 가져오기 및 설정하기 /// </summary> public double Score { get; set; }
/// <summary> /// 기본 생성자 /// </summary> public RankedUrl() { postedurl = null; Score = 0; }
/// <summary> /// 생성자 /// </summary> /// <param name="purl">수집한 페이지</param> /// <param name="score">평가 점수</param> public RankedUrl(PostedUrl purl,double score) { postedurl = purl; Score = score; }
/// <summary> /// ToString 재정의 /// </summary> /// <returns>페이지 제목</returns> public override string ToString() { if (postedurl == null) { return string.Empty; } return postedurl.Title; } } } |
4.6 WSE Core 테스트하기
마지막으로 WSE Core 라이브러리가 잘 작성한 것인지 확인하는 간단한 응용을 만듭시다. 라이브러리를 개발할 때는 가급적 테스트 응용을 작성하여 다시 한 번 확인하는 절차를 갖도록 하세요. 그리고 개발한 라이브러리의 기술 문서와 테스트 응용에 관한 설명을 작성하면 협업하는 개발자가 쉽게 라이브러리를 사용할 수 있습니다.
[그림 4.4]는 콘솔 응용 프로그램에서 WSE Core 라이브러리를 참조하여 사용할 때 인텔리센스가 작동하는 화면입니다.
WSE Core에서 제공하는 형식이 별 다른 알고리즘 없이 단순히 속성을 제공하는 수준이므로 테스트 코드는 따로 소개하지 않겠습니다.
[그림 4.4] 인텔리센스 작동 화면
'프로그래밍 기술 > 웹 검색 엔진 만들기' 카테고리의 다른 글
5.1.4 AddCandidate 저장 프로시저 (0) | 2017.12.06 |
---|---|
5.1.3 NeedCollectUrl 저장 프로시저 (0) | 2017.12.06 |
5.1.2 ExistedPostedUrl 저장 프로시저 (0) | 2017.12.06 |
5.1.1 ExistedCandidate 저장 프로시저 (0) | 2017.12.06 |
5. DBM 설계 및 구현 (0) | 2017.12.06 |
4. 4 InvertedElem 클래스 구현 (0) | 2017.12.06 |
4. 3 Morpheme 클래스 구현 (0) | 2017.12.06 |
4. 2 PostedUrl (수집한 사이트)클래스 구현 (0) | 2017.12.06 |
4. 1 Candidate(수집 후보 사이트) 클래스 구현 (0) | 2017.12.06 |
4. WSE Core 설계 및 구현 (0) | 2017.12.06 |