2010-05-02 4 views
0

Я пытаюсь получить наиболее встречающийся термин частоту для каждого конкретного документа в индексе Lucene. Я пытаюсь установить Treshold топ терминов происходящего что я забочусь о том, может быть, 20«нет вмещающих ошибки экземпляра» при получении верхнего термина частоты для документа из индекса Lucene

Однако, я получаю «нет вмещающих экземпляра DisplayTermVectors типа не доступен» при вызове компаратора ...

Так эта функция проходит вектор каждого документа и максимум лучших условий я хотел бы знать,

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; 
    } 
} 

Пояснения и исправление я буду очень признателен, а также, если кто-то имели опыт с экстракцией термина частоты и сделали это лучшим способом, Я открыт для всех предложений!

Пожалуйста, помогите !!!! Thanx!

ответ

0

Я думаю, что вы должны сделать свой TermFrq public static class.