2010-05-02 2 views
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; 
    } 
} 

설명하고 난 아주 많이 감사합니다 수정을 알고, 그리고 것 다른 사람이 용어 주파수 추출 경험을했고 그것을 더 좋은 방법을했다 또한 경우, 나는 모든 제안에 열려있다!

도와주세요 !!!! 고맙습니다!

답변

0

TermFrq public static class을 작성해야한다고 생각합니다.

관련 문제