# lucene-in-action
Lucene 색인 세그먼트
세그먼트란? >루씬의 대표적인 자료구조 중 하나. 각 세그먼트는 그 자체로 개별적인 색인이며, 전체 색인에 들어있는 문서 중 일정량을 담고 있다. IndexerWriter에서 추가하거나 삭제한 문서를 버퍼에 쌓아 두고 있다가 flush하면 새로운 세그먼트가 생성된다. 그리고 검색할 때는 각 세그먼트를 하나씩 조회한 후 결과를 하나로 합쳐 전달한다. 하나의 세그먼트는 여러 종류의 파일로 구성되며, 각 파일은 모두 _X의 형태로 되어있다. 테스트 색인 이후 생성된 세그먼트 파일 >segments_N이라는 파일은 모든 세그먼트에 대한 참조를 보관하고 있다. 색인에 대한 변경사항이 반영될 때마다 하나씩 증가하는 정수값을 가지고 있다. 세그먼트를 구성하는 파일마다 각자의 역할이 있다. (ter
lucene 검색
IndexSearcher IndexerSearcher란 > lucene에서 검색을 담당하는 클래스이다. 해당 클래스를 이용하여 문서의 색인을 검색한다. 검색이후 검색된 결과를 가지고 있는 객체를 통해서 Iterator하여 출력한다. IndexReader > 색인된 파일을 읽는 클래스이다. 색인된 파일이 있는 위치를 지정하여 검색대상 위치를 지정할 수 있다. 다음과 같은 형태로 String형태의 index path를 받아서 IndexerSearcher를 구성한다. QueryParser > 검색질의식을 만들기 위한 클래스이다. 설정을 넣고 parse하여 lucene에게 어떠한 검색어에 매칭되는 결과를 얻고 싶은지 결정한다. 다음과 같은 형태로 질의식을 요청한다. QueryParser에 의해 만들어진 질의식은 다음과 같다. > contentsFile:개행이 contentsFile필드를 검색대상으로 지정한다. `contentsF
lucene 색인
IndexWriter IndexerWriter란 > lucene에서 색인을 담당하는 클래스이다. 해당 클래스를 이용하여 문서의 내용을 색인한다. > (해당 클래스에서는 검색된 내용을 확인은 불가능하다고 적혀있다. 나중에 검색을 담당하는 클래스에 의해서 확인이 가능해 보인다.) > > 파일의 형태로 저장되며 lucene의 검색저장 자료구조인 segments로 저장된다. 해당 자료구조는 후에 자세히 다루고자 한다. > 책에 적혀있는 lucene version 3.0 코드를 version 8.6.2 기준으로 재 변경 하였다. 생성자 메소드 IndexerWriter를 초기화 해주고 초기화 설정은 StandardAnalyzer이다. Directory 더 여러가지가 있는것으로 보이나 대표적인 종류 2가지만 나열 RAMDirectory : 메인메모리를 색인 장소로 사용(deprecated) FSDirectory : 디스
Lucene-in-action
Elasticsearch를 다루면서 실제 index, search를 담당하는 lucene에 대해 궁금해졌다. 루씬인액션책을 보며 lucene이 어떤 라이브러리인지 확인해 보고자 한다. 단, 해당 책은 2013년 이후로 더이상 최신버전으로 출간하지는 않는것으로 보인다.(최신코드가 아닌...) 해서 해당 코드의 lucene version인 3.0에서 현재 사용하는 lucene 8.6.2형태의 코드로 변경한다.