代码之家  ›  专栏  ›  技术社区  ›  Julia

从lucene索引中获取文档的顶级术语频率时出现“无包含实例错误”

  •  0
  • Julia  · 技术社区  · 16 年前

    我正在尝试获取lucene索引中每个特定文档的最常见术语频率。我正试图设定我所关心的最热门的术语的上限,也许是20

    然而,当调用比较器时,我得到的是“displaytermvorts类型的不包含实例是可访问的”…

    所以对于这个函数,我传递每个文档的向量和我想知道的最大顶项

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

    解释和更正我将非常感谢,而且如果有人有经验的术语频率提取和做得更好的方式,我对所有的建议开放!

    请帮助!!!!谢谢!

    1 回复  |  直到 16 年前
        1
  •  0
  •   extraneon    16 年前

    我想你需要把你的条件 public static class .

    推荐文章