분류 전체보기
-
[Fastcat] 사전에 대해서 알아보자.개발하면서/코드보면서 2011. 9. 9. 03:16
검색엔진을 만들다 보면, 색인어로 등록 하면 안될 키워드가 있고(섹스, 도박, 자살 등등) 서로 비슷한 키워드가 있다.(LG, 엘지, 앨지 이런것들...) fastcat에서는 한글 형태소 분석할때 사용하는 사전, 유의어 사전, 금지어 사전, 사용자 등록 사전이 있다. 그럼 이 사전을 어디다가 쓰느냐? 색인시, 키워드를 추출할때 사용하기도 하고, 검색 질의가 왔을때 질의를 분석할때 사용하기도 한다. 만약에 사전이 없다면 색인어로 나이키가 있는데, 사용자가 nike를 쳤을때 검색이 안되는 뭐 그런..(비유가 맞나?;;) SearchFieldReader.java, KoreanNounExtractor.java 에서 사용하고 있다. 사전의 용도를 알았으니 fastcat에서는 어떤 자료구조로 사전을 구성했는지 알아..
-
GDB로 STL 디버깅하기개발하면서/etc 2011. 9. 7. 00:39
알고리즘문제를 풀면서 C++를 조금씩 조금씩 하고있습니다. 데이타 저장하고 빼내고 하는 아주 단순한 수준으로만 사용하고 있는데, 이마저도 어버버 할때가 많네요;; C로 개발하면 GDB로 디버깅 할때 큰 불편 없이 진행할수 있는데 C++로 하니까 불편한게 있습니다. 바로 STL자료구조에 저장한 데이타를 보고 싶을때인데요, 예제 코드는 다음과 같습니다. //vector::push_back #include #include int main () { std::vector myvector; int myint; std::cout > myint; myvector.push_back (myint); } while (myint); std::cout
-
[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..
-
[Solr] core 여러개 만들기개발하면서/etc 2011. 8. 28. 09:47
http://apache.tt.co.kr/lucene/solr/3.3.0/ 에서 solr를 다운받습니다. ( 8/28 solr 3.3.0 version ) 1. port를 변경하여 두개의 solr를 실행하는 방법 ( http://wiki.apache.org/solr/DistributedSearch ) . example 폴더를 복사한다. . example7574\etc\jetty.xml에서 port를 변경한다. 50000 1500 false . 콘솔창을 두개 연다음 하나는 example\에 있는 start.jar 실행 다른 하나는 example7574에 있는 start.jar 실행 D:\temp\apache-solr-3.3.0\example7574> java -Dsolr.solr.home=d:\temp\a..
-
[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..