@Override public List<RescoreSearchContext> rescore() { if (rescore == null) { return Collections.emptyList(); } return rescore; }
private TopDocs rerank(TopDocs docs, LireFeature feature, IndexReader reader) throws IOException, IllegalAccessException, InstantiationException { LireFeature tmp = new CEDD(); ArrayList<ScoreDoc> res = new ArrayList<ScoreDoc>(docs.scoreDocs.length); float maxScore = 0f; for (int i = 0; i < docs.scoreDocs.length; i++) { tmp.setByteArrayRepresentation( reader .document(docs.scoreDocs[i].doc) .getField(DocumentBuilder.FIELD_NAME_CEDD) .binaryValue() .bytes, reader .document(docs.scoreDocs[i].doc) .getField(DocumentBuilder.FIELD_NAME_CEDD) .binaryValue() .offset, reader .document(docs.scoreDocs[i].doc) .getField(DocumentBuilder.FIELD_NAME_CEDD) .binaryValue() .length); maxScore = Math.max(1 / tmp.getDistance(feature), maxScore); res.add(new ScoreDoc(docs.scoreDocs[i].doc, 1 / tmp.getDistance(feature))); } // sorting res ... Collections.sort( res, new Comparator<ScoreDoc>() { @Override public int compare(ScoreDoc o1, ScoreDoc o2) { return (int) Math.signum(o2.score - o1.score); } }); return new TopDocs(numImagesEval, (ScoreDoc[]) res.toArray(new ScoreDoc[res.size()]), maxScore); }
@Override public void emptyFieldNames() { this.fieldNames = Collections.emptyList(); }