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

4. 5 RankedUrl 클래스 구현

언제나휴일 2017. 12. 6. 09:42
반응형

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] 인텔리센스 작동 화면

[그림 4.4] 인텔리센스 작동 화면

반응형