Programming/Lucene

3

Lucene 하위버전에서 5.x로 업그레이드 하기

Lucene의 버전이 빠르게 업그레이드 되면서, 이전 로그에 대한 마이그레이션 이슈가 발생합니다.기본적으로는 로그 검색 관련한 부분과 통계를 위한 부분으로 나눠서 처리 방식이 달라집니다. 다음은 3.x의 인덱스와 4.x의 인덱스에서 5.x로의 업그레이드 시에 고려할 사항을 정리해 봅니다.(테스트 버전: 3.5, 4.9, 5.2) 1) 4.x -> 5.x로 업그레이드하기 * 검색 : lucene-backward-codecs.jar 포함시 별도 수정 없이 정상적으로 이전 버전으로 로그도 검색이 가능합니다. 단, 성능에 대한 이슈 경고가 있으므로 성능이 중요한 경우에는 별도의 테스트가 필요합니다. * 통계 : 4.x 대의 인덱스인 경우, 그룹핑을 위하여 다음과 같은 하위호환 처리가 별도로 필요합니다. Map ..

Programming/Lucene 2016.09.26 Joshua95

[Lucene] Index Merge 중 에러

lucene index를 시간 단위로 저장하다 보니, 파일의 개수가 많아지는 문제가 있습니다.이를 해결하고자 하루에 한번 인덱스를 머지해 주는 작업을 추가했습니다. 한참 추가한 기능을 테스트해 보던 차에 아래와 같은 처음보는 오류가 나서 화들짝 놀랐습니다. [ 에러 메시지 ]java.io.IOException: background merge hit exception: _12y(4.9):C24447062 _tl(4.9):C23308858 _7l(4.9):C18047857 _go(4.9):C14199334 _19d(4.9):c11862652 _l4(4.9):C11815951 원인을 분석해 보니 해당 오류는 lucene forceMerge 중에 디스크가 Full이 되면서 디스크 확보가 되지 않아서 발생한 것이..

Programming/Lucene 2015.06.03 Joshua95

[Lucene] 3.5에서 4.9로 업그레이드 시 고려사항

사용하던 Lucene의 버전을 3.5에서 4.9로 업그레이드 하려고 합니다.우선 라이브러리 교체 후 코드가 돌아가기 위한 최소한의 고려 사항을 정리해 보았습니다. 루씬의 버전을 3.5에서 4.9로 업그레이드 시에 고려해야 될 사항입니다. 1) Field 사용 변경 (Field.Store.YES + NOT_ANALYZED_NO_NORMS -> StringField)document.add(new Field("Name", texts, Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); --> document.add(new StringField("Name", texts, Field.Store.YES)); 2) Field 사용 변경 (Field.Store.YES + A..

Programming/Lucene 2014.09.29 Joshua95