List of usage examples for org.apache.solr.search DocList maxScore
public float maxScore();
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 v a 2 s .co 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 }//from w w w . ja v a2s.com } 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 w w w.j a v a2 s. co 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:opennlp.tools.similarity.apps.solr.IterativeSearchRequestHandler.java
License:Apache License
public DocList filterResultsBySyntMatchReduceDocSet(DocList docList, SolrQueryRequest req, SolrParams params) { //if (!docList.hasScores()) // return docList; int len = docList.size(); if (len < 1) // do nothing return docList; ParserChunker2MatcherProcessor pos = ParserChunker2MatcherProcessor.getInstance(); DocIterator iter = docList.iterator(); float[] syntMatchScoreArr = new float[len]; String requestExpression = req.getParamString(); String[] exprParts = requestExpression.split("&"); for (String part : exprParts) { if (part.startsWith("q=")) requestExpression = part;/* w w w .j av a 2s . com*/ } String fieldNameQuery = StringUtils.substringBetween(requestExpression, "=", ":"); // extract phrase query (in double-quotes) String[] queryParts = requestExpression.split("\""); if (queryParts.length >= 2 && queryParts[1].length() > 5) requestExpression = queryParts[1].replace('+', ' '); else if (requestExpression.indexOf(":") > -1) {// still field-based expression requestExpression = requestExpression.replaceAll(fieldNameQuery + ":", "").replace('+', ' ') .replaceAll(" ", " ").replace("q=", ""); } if (fieldNameQuery == null) return docList; if (requestExpression == null || requestExpression.length() < 5 || requestExpression.split(" ").length < 3) return docList; int[] docIDsHits = new int[len]; IndexReader indexReader = req.getSearcher().getIndexReader(); List<Integer> bestMatchesDocIds = new ArrayList<Integer>(); List<Float> bestMatchesScore = new ArrayList<Float>(); List<Pair<Integer, Float>> docIdsScores = new ArrayList<Pair<Integer, Float>>(); try { for (int i = 0; i < docList.size(); ++i) { int docId = iter.nextDoc(); docIDsHits[i] = docId; Document doc = indexReader.document(docId); // get text for event String answerText = doc.get(fieldNameQuery); if (answerText == null) continue; SentencePairMatchResult matchResult = pos.assessRelevance(requestExpression, answerText); float syntMatchScore = new Double( parseTreeChunkListScorer.getParseTreeChunkListScore(matchResult.getMatchResult())) .floatValue(); bestMatchesDocIds.add(docId); bestMatchesScore.add(syntMatchScore); syntMatchScoreArr[i] = (float) syntMatchScore; //*iter.score(); System.out.println(" Matched query = '" + requestExpression + "' with answer = '" + answerText + "' | doc_id = '" + docId); System.out.println(" Match result = '" + matchResult.getMatchResult() + "' with score = '" + syntMatchScore + "';"); docIdsScores.add(new Pair(docId, syntMatchScore)); } } catch (CorruptIndexException e1) { // TODO Auto-generated catch block e1.printStackTrace(); //log.severe("Corrupt index"+e1); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); //log.severe("File read IO / index"+e1); } Collections.sort(docIdsScores, new PairComparable()); for (int i = 0; i < docIdsScores.size(); i++) { bestMatchesDocIds.set(i, docIdsScores.get(i).getFirst()); bestMatchesScore.set(i, docIdsScores.get(i).getSecond()); } System.out.println(bestMatchesScore); float maxScore = docList.maxScore(); // do not change int limit = docIdsScores.size(); int start = 0; DocSlice ds = null; ds = new DocSlice(start, limit, ArrayUtils.toPrimitive(bestMatchesDocIds.toArray(new Integer[0])), ArrayUtils.toPrimitive(bestMatchesScore.toArray(new Float[0])), bestMatchesDocIds.size(), maxScore); return ds; }