0
Lucene 색인에서 모든 특정 문서에 대해 가장 자주 발생하는 용어 빈도를 얻으려고합니다. 나는Lucene 색인에서 문서에 대한 상위 용어 빈도를 얻는 동안 "인스턴스 오류를 포함하지 않음"
그래서에 ... 나는 비교기를 호출 할 때 "형 DisplayTermVectors의 더 inclosing 인스턴스가 액세스 할 수 없습니다"얻고, 그러나 나는 걱정 상단 발생하는 기간의 treshold, 어쩌면 20
을 설정하려고 나는 모든 문서 및 최대 최고 용어 벡터를 통과이 기능은 내가
protected static Collection getTopTerms(TermFreqVector tfv, int maxTerms){
String[] terms = tfv.getTerms();
int[] tFreqs = tfv.getTermFrequencies();
List result = new ArrayList(terms.length);
for (int i = 0; i < tFreqs.length; i++) {
TermFrq tf = new TermFrq(terms[i], tFreqs[i]);
result.add(tf);
}
Collections.sort(result, new FreqComparator());
if(maxTerms < result.size()){
result = result.subList(0, maxTerms);
}
return result;
}
/*Class for objects to hold the term/freq pairs*/
static class TermFrq{
private String term;
private int freq;
public TermFrq(String term,int freq){
this.term = term;
this.freq = freq;
}
public String getTerm(){
return this.term;
}
public int getFreq(){
return this.freq;
}
}
/*Comparator to compare the objects by the frequency*/
class FreqComparator implements Comparator{
public int compare(Object pair1, Object pair2){
int f1 = ((TermFrq)pair1).getFreq();
int f2 = ((TermFrq)pair2).getFreq();
if(f1 > f2) return 1;
else if(f1 < f2) return -1;
else return 0;
}
}
설명하고 난 아주 많이 감사합니다 수정을 알고, 그리고 것 다른 사람이 용어 주파수 추출 경험을했고 그것을 더 좋은 방법을했다 또한 경우, 나는 모든 제안에 열려있다!
도와주세요 !!!! 고맙습니다!