본문 바로가기

Lucene

[lucene] MultiFields.getTerms. getSumTotalTermFreq in Lucene 4.2.1

예전에 루씬으로 색인한 인덱스파일로부터 Term Freq를 뽑는 포스팅을 한적이 있는데요..


http://devyongsik.tistory.com/577

http://devyongsik.tistory.com/578


그 당시에는 인덱스리더로부터 TermVector를 하나 들고와서 TermVector로부터 Terms 객체를 얻어서

getSumTotalTermFreq()를 실행했었고 이 값이 -1이 나왔었습니다. 이건 전체 Term의 Freq의 합이죠..


IndexReader ir = IndexReader.open(dir);

Terms terms1 = ir.getTermVector(0, "f");


System.out.println(terms1.getSumTotalTermFreq());


당시 루씬 메일링 리스트에 질문을 해서 위와 같은 케이스에서의 -1은 정상이라는 답변도 받았었습니다.


이번에 페이스북에서 '김호연'님하고 같이 이야기를 하다가 알게된 사이트에서

http://sujitpal.blogspot.kr/2012/12/analyzing-enron-data-frequency.html


MultiFields로부터 TermFreq를 얻는 방법이 있어서, 이것을 자바로 변환해보았습니다.


결과를 보시면 전체 색인된 document로부터 같은 필드명을 갖는 필드에 대한 모든 Term Freq 정보를 가져올 수 있네요. 위에서 -1이 나오던 getSumTotalTermFreq도 해당 필드에서 추출된 전체 Term의 Freq의 합으로 잘 나옵니다.


위 예에서는 13.. 왠지 전체 필드에 대한 Term을 가지고 위와 비슷한 작업을 할 수 있을것도 같은데요.. 흠..