@Override public double score(Posting _p) { FieldPosting p = (FieldPosting)_p; final int[] tff = p.getFieldFrequencies(); final int[] lf = p.getFieldLengths(); //System.err.println("tff=" + ArrayUtils.join(tff, ",")); //System.err.println("lf=" + ArrayUtils.join(lf, ",")); assert lf != null : "No fields lengths from posting "; assert tff.length == lf.length : "Mismatch between lengths of field length and frequencies"; int tf = 0, l = 0; for(int fieldId : activeFieldIds) { tf += tff[fieldId]; l += lf[fieldId]; } if (tf == 0) return 0; assert l > 0 : "Frequency but no length for docid " + p.getId(); //System.err.println("tf=" + tf + " l="+l); final double rtr = basicModel.score(tf, l); if (Double.isNaN(rtr)) System.err.println("BPosting " + p.getId() + " had NaN : tf=" + tf + " l="+l+ " tf=" + org.terrier.utility.ArrayUtils.join(tff, ",") + " lf=" + org.terrier.utility.ArrayUtils.join(lf, ",")); return rtr; }
@Override public double score(Posting _p) { FieldPosting p = (FieldPosting)_p; final int[] tff = p.getFieldFrequencies(); final int[] lf = p.getFieldLengths(); //System.err.println("tff=" + ArrayUtils.join(tff, ",")); //System.err.println("lf=" + ArrayUtils.join(lf, ",")); assert lf != null : "No fields lengths from posting "; assert tff.length == lf.length : "Mismatch between lengths of field length and frequencies"; int tf = 0, l = 0; for(int fieldId : activeFieldIds) { tf += tff[fieldId]; l += lf[fieldId]; } if (tf == 0) return 0; assert l > 0 : "Frequency but no length for docid " + p.getId(); //System.err.println("tf=" + tf + " l="+l); final double rtr = basicModel.score(tf, l); if (Double.isNaN(rtr)) System.err.println("BPosting " + p.getId() + " had NaN : tf=" + tf + " l="+l+ " tf=" + org.terrier.utility.ArrayUtils.join(tff, ",") + " lf=" + org.terrier.utility.ArrayUtils.join(lf, ",")); return rtr; }