달력

042018  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  
  •  
이번에는 전체색인을 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 class 필드에  저장한다.
Map을 사용하지 않고, AsciiCharTrie를 이용해서 sequence를 저장하는 이유는 조금이라도 더 빠른 연산을 위함인것 같다.


SourceReader는 원문을 읽는 기능이다.
Test엔 CollectFileParser로 원문의 파일 리스트(DirBufferedReader)를 얻어온다. 
CollectFileParser의 hasNext는 원문을 fieldSettingList의 size 만큼 readLine한다.(body field는 추가작업)
(원문의 필드는 개행으로 구분되어있음)

원문을 한줄한줄 읽으면서, type에 맞게 원문을 저장한다.

각 필드가 모여서 Document가 되고, next가 원문을 저장한 Document 를 리턴하는 기능을 수행한다.

다음에는 SegmentWriter를 알아보도록 하자.


================ 2011.08.28 추가 ===================

 

Posted by 오산돌구