繁体   English   中英

从Lucene索引获取文档的最高频率时,“没有封闭实例错误”

[英]“no inclosing instance error ” while getting top term frequencies for document from Lucene index

我正在尝试为Lucene索引中的每个特定文档获取最常出现的术语频率。 我正在尝试设定我关心的出现次数最多的术语的阈值,也许是20

但是,调用Comparator时出现“无法访问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;
  }
}

我将非常感谢您做出的解释和更正,并且如果其他人对术语频率提取有经验并且做得更好,我欢迎所有建议!

请帮忙!!!! 谢谢!

我认为您需要将TermFrq设为public static class

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM