먼저 분석하기 버튼 클릭 이벤트 핸들러를 추가합니다.
private void btn_parse_Click(object sender, EventArgs e)
컨트롤에 입력한 정보를 이용하여 수집한 웹 페이지 정보 개체를 생성합니다. 여기에서 입력하는 것은 가상의 데이터입니다. 부분적으로 단위 테스트를 하기 위해 가상의 데이터를 입력하는 것입니다.
PostedUrl purl = new PostedUrl(); purl.Title = tbox_title.Text; purl.Url = tbox_paddr.Text; purl.OriginUrl = tbox_oaddr.Text; purl.Depth = (int)nud_depth.Value; purl.PostedTime = dtp_posted.Value; purl.Content = tbox_content.Text;
이미 작성한 형태소 분석기 라이브러리를 참조하여 정적 클래스 MorphemeParser의 메서드 Parse를 이용하여 페이지의 컨텐츠 내용을 분석합니다.
List<Morpheme> list = MorphemeParser.Parse(purl.Content);
분석한 결과를 결과 창에 출력합니다. 이 부분은 별도의 메서드로 작성합시다.
AddMorpheme(list);
마지막으로 검색한 결과로 역 파일을 만듭니다. 역 파일을 만드는 것은 역 파일 라이브러리로 만들 것이므로 여기에서는 라이브러리에 만들 클래스를 미리 만들어서 사용합시다. 역 파일 라이브러리는 예광탄 설명 뒤에 별도로 설명할게요.
InvFileMaker.MakeInvFile(purl.Url, list);
분석한 결과를 출력하는 메서드를 작성합시다.
private void AddMorpheme(List<Morpheme> list)
먼저 결과를 출력할 리스트 컨트롤의 아이템 항목을 지워줍니다.
lv_result.Items.Clear();
입력 인자로 받은 형태소 목록의 각 항목을 리스트 컨트롤 항목으로 생성하여 목록에 추가합니다.
ListViewItem lvi = null; foreach (Morpheme mo in list) { lvi = new ListViewItem( new string[2] { mo.Name, mo.Count.ToString() }); lv_result.Items.Add(lvi); }
이번에는 역 파일 참조 버튼 클릭 이벤트 핸들러를 추가하세요.
private void btn_ref_inv_Click(object sender, EventArgs e)
먼저 역 파일 상세 목록을 지워줍니다.
lv_mo_site.Items.Clear();
검색을 위해 만든 WSEForSearch 라이브러리를 참조하여 EHDbmForSearch 정적 클래스의 GetInvertedFile 메서드를 이용하여 역 파일 목록을 얻어옵니다.
List<InvertedElem> list = null; list = EHDbmForSearch.GetInvertedFile(tbox_mname.Text);
얻어온 목록으로 리스트 뷰 컨트롤 항목을 생성하여 목록에 추가합니다.
ListViewItem lvi = null; foreach (InvertedElem ie in list) { lvi = new ListViewItem( new string[2] { ie.Url, ie.RefCount.ToString() }); lv_mo_site.Items.Add(lvi); }
▷ MainForm.cs
using System; using System.Collections.Generic; using System.Windows.Forms; using WSE_Core; using MorphemeParserLib; using DBMForSearchLib; using InvFileMakerLib; namespace InvFileMaker_예광탄 { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void btn_parse_Click(object sender, EventArgs e) { PostedUrl purl = new PostedUrl(); purl.Title = tbox_title.Text; purl.Url = tbox_paddr.Text; purl.OriginUrl = tbox_oaddr.Text; purl.Depth = (int)nud_depth.Value; purl.PostedTime = dtp_posted.Value; purl.Content = tbox_content.Text; List<Morpheme> list = MorphemeParser.Parse(purl.Content); AddMorpheme(list); InvFileMaker.MakeInvFile(purl.Url, list); } private void AddMorpheme(List<Morpheme> list) { lv_result.Items.Clear(); ListViewItem lvi = null; foreach (Morpheme mo in list) { lvi = new ListViewItem( new string[2] { mo.Name, mo.Count.ToString() }); lv_result.Items.Add(lvi); } } private void btn_ref_inv_Click(object sender, EventArgs e) { lv_mo_site.Items.Clear(); List<InvertedElem> list = null; list = EHDbmForSearch.GetInvertedFile(tbox_mname.Text); ListViewItem lvi = null; foreach (InvertedElem ie in list) { lvi = new ListViewItem( new string[2] { ie.Url, ie.RefCount.ToString() }); lv_mo_site.Items.Add(lvi); } } } }