List of usage examples for org.apache.solr.search DocIterator score
public float score();
nextDoc() The value returned may be meaningless depending on the context in which the DocIterator instance was retrieved.
From source file:com.mindquarry.search.solr.request.JSONWriter.java
License:Open Source License
public void writeDocList(String name, DocList ids, Set<String> fields, Map otherFields) throws IOException { boolean includeScore = false; if (fields != null) { includeScore = fields.contains("score"); if (fields.size() == 0 || (fields.size() == 1 && includeScore) || fields.contains("*")) { fields = null; // null means return all stored fields }/* w ww .j a va 2 s . c o m*/ } int sz = ids.size(); writer.write('{'); incLevel(); writeKey("numFound", false); writeInt(null, ids.matches()); writer.write(','); writeKey("start", false); writeInt(null, ids.offset()); if (includeScore) { writer.write(','); writeKey("maxScore", false); writeFloat(null, ids.maxScore()); } writer.write(','); // indent(); writeKey("docs", false); writer.write('['); incLevel(); boolean first = true; DocIterator iterator = ids.iterator(); for (int i = 0; i < sz; i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id); if (first) { first = false; } else { writer.write(','); } indent(); writeDoc(null, doc, fields, (includeScore ? iterator.score() : 0.0f), includeScore); } decLevel(); writer.write(']'); if (otherFields != null) { writeMap(null, otherFields, true, false); } decLevel(); indent(); writer.write('}'); }
From source file:com.mindquarry.search.solr.request.QuickSearchSearchJSONWriter.java
License:Open Source License
public void writeDocList(String name, DocList ids, Set<String> fields, Map otherFields) throws IOException { boolean includeScore = false; if (fields != null) { includeScore = fields.contains("score"); //$NON-NLS-1$ if (fields.size() == 0 || (fields.size() == 1 && includeScore) || fields.contains("*")) { //$NON-NLS-1$ fields = null; // null means return all stored fields }/*ww w. ja v a 2 s.c o m*/ } int sz = ids.size(); writer.write('{'); incLevel(); writeKey("numFound", false); //$NON-NLS-1$ writeInt(null, ids.matches()); writer.write(','); writeKey("start", false); //$NON-NLS-1$ writeInt(null, ids.offset()); if (includeScore) { writer.write(','); writeKey("maxScore", false); //$NON-NLS-1$ writeFloat(null, ids.maxScore()); } writer.write(','); writeKey("docs", false); //$NON-NLS-1$ writer.write('{'); incLevel(); HashMap<String, List<DocWithScore>> sets = new HashMap<String, List<DocWithScore>>(); DocIterator iterator = ids.iterator(); for (int i = 0; i < sz; i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id); for (Fieldable ff : (List<Fieldable>) doc.getFields()) { String fname = ff.name(); String fval = ff.stringValue(); if (fname.equals("type")) { //$NON-NLS-1$ String type = fval; if (type.equals("wiki")) { //$NON-NLS-1$ type = type.replaceFirst("w", "W"); //$NON-NLS-1$ //$NON-NLS-2$ } else if (type.equals("tasks")) { //$NON-NLS-1$ type = type.replaceFirst("t", "T"); //$NON-NLS-1$ //$NON-NLS-2$ } if (!sets.containsKey(type)) { sets.put(type, new ArrayList<DocWithScore>()); } if (includeScore) { sets.get(type).add(new DocWithScore(doc, iterator.score())); } else { sets.get(type).add(new DocWithScore(doc, 0.0f)); } } } } boolean firstSet = true; Set<String> keys = sets.keySet(); Iterator<String> kIt = keys.iterator(); while (kIt.hasNext()) { String key = kIt.next(); List<DocWithScore> docs = sets.get(key); if (firstSet) { firstSet = false; } else { writer.write(','); } indent(); writeKey(key, false); writer.write('['); incLevel(); boolean firstDoc = true; for (Iterator iter = docs.iterator(); iter.hasNext();) { DocWithScore doc = (DocWithScore) iter.next(); if (firstDoc) { firstDoc = false; } else { writer.write(','); } writer.write('{'); boolean firstEntry = true; for (Fieldable ff : (List<Fieldable>) doc.getDoc().getFields()) { String fname = ff.name(); if ((fname.equals("location")) || (fname.equals("title"))) { //$NON-NLS-1$ //$NON-NLS-2$ if (firstEntry) { firstEntry = false; } else { writer.write(','); } indent(); writeKey(fname, false); if (fname.equals("location")) { //$NON-NLS-1$ writeStr(null, transformToWebPath(ff.stringValue()), true); } else { writeStr(null, ff.stringValue(), true); } } } // write score if (includeScore) { writer.write(','); indent(); writeKey("score", false); //$NON-NLS-1$ Float score = doc.getScore() * 100; int absScore = score.intValue(); writeInt(null, absScore); } indent(); writer.write('}'); } writer.write(']'); } decLevel(); indent(); writer.write('}'); if (otherFields != null) { writeMap(null, otherFields, true, false); } decLevel(); indent(); writer.write('}'); }
From source file:net.yacy.cora.federate.solr.responsewriter.EnhancedXMLResponseWriter.java
License:Open Source License
private static final void writeDocs(final Writer writer, final SolrQueryRequest request, final DocList response) throws IOException { boolean includeScore = false; final int sz = response.size(); writer.write("<result"); writeAttr(writer, "name", "response"); writeAttr(writer, "numFound", Long.toString(response.matches())); writeAttr(writer, "start", Long.toString(response.offset())); if (includeScore) { writeAttr(writer, "maxScore", Float.toString(response.maxScore())); }/*from ww w. j a va2 s.c o m*/ if (sz == 0) { writer.write("/>"); return; } writer.write('>'); writer.write(lb); SolrIndexSearcher searcher = request.getSearcher(); DocIterator iterator = response.iterator(); includeScore = includeScore && response.hasScores(); IndexSchema schema = request.getSchema(); for (int i = 0; i < sz; i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id, DEFAULT_FIELD_LIST); writeDoc(writer, schema, null, doc.getFields(), (includeScore ? iterator.score() : 0.0f), includeScore); } writer.write("</result>"); writer.write(lb); }
From source file:net.yacy.cora.federate.solr.responsewriter.FlatJSONResponseWriter.java
License:Open Source License
private static final void writeDocs(final Writer writer, final SolrQueryRequest request, final DocList response) throws IOException { boolean includeScore = false; final int sz = response.size(); SolrIndexSearcher searcher = request.getSearcher(); DocIterator iterator = response.iterator(); includeScore = includeScore && response.hasScores(); IndexSchema schema = request.getSchema(); for (int i = 0; i < sz; i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id); writeDoc(writer, schema, null, doc.getFields(), (includeScore ? iterator.score() : 0.0f), includeScore); }//from w w w . j ava 2 s . c o m }
From source file:org.alfresco.solr.query.AlfrescoReRankQParserPluginTest.java
License:Open Source License
@Test public void testScale() throws Exception { assertU(delQ("*:*")); assertU(commit());//from w w w .ja v a 2 s . c o m String[] doc = { "id", "1", "term_s", "YYYY", "group_s", "group1", "test_ti", "5", "test_tl", "10", "test_tf", "2000" }; assertU(adoc(doc)); assertU(commit()); String[] doc1 = { "id", "2", "term_s", "YYYY", "group_s", "group1", "test_ti", "50", "test_tl", "100", "test_tf", "200" }; assertU(adoc(doc1)); String[] doc2 = { "id", "3", "term_s", "YYYY", "test_ti", "5000", "test_tl", "100", "test_tf", "200" }; assertU(adoc(doc2)); assertU(commit()); String[] doc3 = { "id", "4", "term_s", "YYYY", "test_ti", "500", "test_tl", "1000", "test_tf", "2000" }; assertU(adoc(doc3)); String[] doc4 = { "id", "5", "term_s", "YYYY", "group_s", "group2", "test_ti", "4", "test_tl", "10", "test_tf", "2000" }; assertU(adoc(doc4)); assertU(commit()); String[] doc5 = { "id", "6", "term_s", "YYYY", "group_s", "group2", "test_ti", "10", "test_tl", "100", "test_tf", "200" }; assertU(adoc(doc5)); assertU(commit()); //Calculate the scales manually ModifiableSolrParams params = new ModifiableSolrParams(); params.add("rq", "{!alfrescoReRank reRankQuery=$rqq reRankDocs=200 scale=false}"); params.add("df", "TEXT"); params.add("q", "term_s:YYYY"); params.add("rqq", "{!edismax bf=$bff}id:(1 2 4 5 6)"); params.add("bff", "field(test_ti)"); params.add("fl", "id,score"); params.add("start", "0"); params.add("rows", "6"); SolrQueryRequest req = req(params); SolrQueryResponse res = null; try { res = queryAndResponse(null, req); } finally { req.close(); } @SuppressWarnings("rawtypes") NamedList vals = res.getValues(); ResultContext resultContext = (ResultContext) vals.get("response"); DocList docs = resultContext.getDocList(); DocIterator it = docs.iterator(); float max = -Float.MAX_VALUE; List<Float> scores = new ArrayList<Float>(); while (it.hasNext()) { it.next(); float score = it.score(); max = Math.max(score, max); scores.add(score); } float[] scaledScores = new float[scores.size()]; for (int i = 0; i < scaledScores.length; i++) { float score = scores.get(i); if (i < 5) { //The first 5 docs are hit on the reRanker so add 1 to score scaledScores[i] = (score / max) + 1; } else { //The last score is not a hit on the reRanker scaledScores[i] = (score / max); } } //Get the scaled scores from the reRanker params = new ModifiableSolrParams(); params.add("rq", "{!alfrescoReRank reRankQuery=$rqq reRankDocs=200 scale=true}"); params.add("df", "TEXT"); params.add("q", "term_s:YYYY"); params.add("rqq", "{!edismax bf=$bff}id:(1 2 4 5 6)"); params.add("bff", "field(test_ti)"); params.add("fl", "id,score"); params.add("start", "0"); params.add("rows", "6"); req = req(params); try { res = queryAndResponse(null, req); } finally { req.close(); } vals = res.getValues(); resultContext = (ResultContext) vals.get("response"); docs = resultContext.getDocList(); it = docs.iterator(); int index = 0; while (it.hasNext()) { it.next(); float score = it.score(); float scaledScore = scaledScores[index++]; Assert.assertEquals("score should be equal to scaled score", score, scaledScore, 0.00001); } req.close(); }
From source file:solr2155.solr.search.function.distance.MultiDistanceFunctionTest.java
License:Apache License
/** TODO propose that this go into Solr's test harness. */ private void assertQScore(SolrQueryRequest req, int docIdx, float targetScore) throws Exception { try {//from ww w. j a v a 2s . com String handler = req.getParams().get(CommonParams.QT); SolrQueryResponse resp = h.queryAndResponse(handler, req); // ResultContext resCtx = (ResultContext) resp.getValues().get("response"); final DocList docList = (DocList) resp.getValues().get("response"); assertTrue("expected more docs", docList.size() >= docIdx + 1); assertTrue("expected scores", docList.hasScores()); DocIterator docIterator = docList.iterator(); for (int i = -1; i < docIdx; i++) {//loops at least once docIterator.nextDoc(); } float gotScore = docIterator.score(); assertEquals(gotScore, targetScore, 0.0001); } finally { req.close(); } }