Example usage for org.apache.solr.search DocList maxScore

List of usage examples for org.apache.solr.search DocList maxScore

Introduction

In this page you can find the example usage for org.apache.solr.search DocList maxScore.

Prototype

public float maxScore();

Source Link

Document

The maximum score for the search...

Usage

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