[강좌] Lucene Index File Format Overview

뭐 이번에 루씬(Lucene) 파일시스템을 분석할 일이 생겼다. 물론 일적으로 하는것이고 전에 한번 쭉 봐서 그런지 이젠 뭔가가 보이기 시작하는군. 역시 100번 읽으면 뭐든지 이해가 되는거 같다(讀書百遍意自見). 그냥 어제 문서를 보면서 간단하게 정리를 할 필요가 있다는 생각이 들어서 한번 이곳에 정리해 본다. 1.개요 루씬(Lucene)은 세그먼트라는걸 유지한다. 뭐 sub-index라고 이해해도 될것이다. 이런 세그먼트들이 모여서 하나의 큰 인덱스로 […]

계속 읽기

루씬(Lucene) 파일 포멧 초벌번역 공개

루씬(Lucene) Index File Format 초벌번역을 완료했다. 기준 문서는 1.9 Final 배포본에 있는 문서를 참고 했고, document, field, term 등의 한글용어 혼용이 있을수 있으나, 일반적으로 Document, Term, Field 같은 첫 문자가 대문자인 개체명(자료형?)일경우 그대로 사용하였다. 개인적인 생각으로는 초벌 번역정도의 수준이라도 생각된다. 아직 인덱스 파일 구조에 대해서 통달한게 아니라서 텀 사전 이하 부분에 대해서는 정확하게 개념 파악을 […]

계속 읽기

Unicode와 UTF-8의 차이점이란?

오늘 열렬히 코드를 보고 있다가 유니코드(Unicode) 복원 부분에 대한걸 봤다. 역시나 Lucene코드를 뒤져보다 나온 내용이다. Lucene은 디폴트로 유니코드셋을 쓴다. 그러니 UTF-8은 피할수 없이 꼭 거쳐가야만 될 부분이였다. 일단 코드는 이렇다. (역시 Python 코드 ㅋㅋ) def readChars(self, length):    buffer = []    for i in range(length):        b = self.readByte()        […]

계속 읽기

Lucene에서 variable int 표현하는법

오늘 Lucene에서 쓰이는 인덱스 시스템을 분석하면서 Vint 타입을 어떻게 처리하는지 코드를 분석해봤다. int면 int지 왜 Vint인지, 예전에 DB를 공부하면서 vchar타입인가? 하는 V자가 붙은 타입을 봤는데, 이 것들의 설명이 그 대상체의 크기에 맞게 disk에 공간을 차지한다는 개념이였다. 물론 Lucene도 마찬가지로 이 부분에 대해서 고려한 부분이 있었다. 이 코드를 이해하고 ‘아~!’ 하고 머리를 쳤으니 참 기쁘기 한량없었다. […]

계속 읽기