개발하면서/코드보면서
-
python string 다루기개발하면서/코드보면서 2011. 10. 13. 08:07
PS를 하다보면 string을 자유롭게 다뤄야하는데 내가 직접 짜고 다른 사람이 짠 해답을 보면 built-in method로 깔끔하게 구현한게 있을때 현타가 온다. python string의 built-in method와 slices를 알아보고 대강 어떤게 있는지 살펴보기로 한다. built-in Method str.isXXX 알파벳, 숫자, 알파벳+숫자, 아스키 코드, 대/소문자 여부를 판단할때 사용한다. str.center(width, [fillchar]), str.ljust(width, [fillchar]), str.rjust(width, [fillchar]) 문자열 가운데 정렬/왼족 정렬/오른쪽 정렬 str.count(sub[, start[, end]]) 문자열 안에 sub이 발생하는 횟수 st..
-
[Fastcat] Search에 대해 알아보자 (1)개발하면서/코드보면서 2011. 9. 10. 14:45
지금까지 fastcat의 인덱싱, 사전에 대해 알아보았습니다. 남은건 Search.....훑어봤는데.....어후;;; 길어질것 같아요 ㅋㅋ 제가 학습한 것들을 최대한 알기 쉽게 설명하는게 이 블로그의 목적입니다. 제가 이해된 부분, 추측하는것들이 있으니 틀린점, 애매한점 이런거 알려주시면 감사하겠습니다. 환영합니다~! : ) 피드백 하나가 포스트에 힘을 실어줍니다 ㅋㅋㅋ Search에 대해 알아보도록 하겠습니다. (편의상 존댓말은 생략합니다.) -------------------------------------------------------------------------------------------- 우선 Search 부분의 class Diagram은 다음과 같다. loadSearcherAndRe..
-
[Fastcat] 사전에 대해서 알아보자.개발하면서/코드보면서 2011. 9. 9. 03:16
검색엔진을 만들다 보면, 색인어로 등록 하면 안될 키워드가 있고(섹스, 도박, 자살 등등) 서로 비슷한 키워드가 있다.(LG, 엘지, 앨지 이런것들...) fastcat에서는 한글 형태소 분석할때 사용하는 사전, 유의어 사전, 금지어 사전, 사용자 등록 사전이 있다. 그럼 이 사전을 어디다가 쓰느냐? 색인시, 키워드를 추출할때 사용하기도 하고, 검색 질의가 왔을때 질의를 분석할때 사용하기도 한다. 만약에 사전이 없다면 색인어로 나이키가 있는데, 사용자가 nike를 쳤을때 검색이 안되는 뭐 그런..(비유가 맞나?;;) SearchFieldReader.java, KoreanNounExtractor.java 에서 사용하고 있다. 사전의 용도를 알았으니 fastcat에서는 어떤 자료구조로 사전을 구성했는지 알아..
-
[Fastcat] FullIndex를 알아보자. (3)개발하면서/코드보면서 2011. 9. 3. 10:37
저번시간에 DocumentWriter에 이어서 이번에는 SearchWriter, SortWriter, GroupWriter 알아보려 한다. 우선 SearchWriter에 초기화 부분은 아래와 같다. for (int i = 0; i < indexSettingList.size(); i++) { IndexSetting is = indexSettingList.get(i); String handlerName = is.handler; logger.debug("is = "+is); Object t = IRSettings.classLoader.loadObject(handlerName); if(t != null){ tokenizers[i] = (Tokenizer)t; } else { throw new IOExceptio..
-
[Fastcat] FullIndex를 알아보자. (2)개발하면서/코드보면서 2011. 8. 13. 00:03
SegmentWriter에 대해 알아보는 시간이다. SegmentWriter에는 문서 텍스트 및 포스팅 정보, 렉시콘, 필터, 정렬, 그룹에 필요한 정보를 가공하는 역할을 한다. SourceReader에서 하나의 문서를 schema.xml에서 정의한 속성대로 저장한다. 한문서를 읽을 때마다 DocumentWriter, SearchWriter, FilterWriter, SortWriter, GroupWriter의 write를 실행한다. while(!requestStop && sourceReader.hasNext()){ Document doc = sourceReader.next(); int docNo = documentWriter.write(doc); if(lastDocNo != docNo) throw ne..
-
[Fastcat] FullIndex를 알아보자. (1)개발하면서/코드보면서 2011. 8. 6. 00:40
이번에는 전체색인을 fastcat에서는 어떻게 하는지 알아보자. schema에서는 각 필드의 정보들(primary, sort, type, group등)을 schema.xml에서 읽어들이고 SourceReader는 실제 원문 파일을 읽어들이는 기능을 한다. SegmentWriter는 읽어들인 데이터를 가지고, 실제 색인작업을 수행한다. 이번 포스트에서는 Schema와 SourceReader에 대해서 알아보도록 하자. Test용으로 있는 schema.xml을 보면 맨 처음에는 collection의 이름이 나오고 그 다음에 6개의 필드 정보가 나온다. 각 필드는 name과 type은 반드시 있어야한다. (가장 기본적인 data) schema.xml을 한줄한줄 읽어가며 parsing한 data를 Schema c..