Search in sources :

Example 1 with TinyIdentitySet

use of com.yahoo.collections.TinyIdentitySet in project vespa by vespa-engine.

the class VespaBackEndSearcher method partitionHits.

private List<Result> partitionHits(Result result, String summaryClass) {
    List<Result> parts = new ArrayList<>();
    TinyIdentitySet<Query> queryMap = new TinyIdentitySet<>(4);
    for (Iterator<Hit> i = hitIterator(result); i.hasNext(); ) {
        Hit hit = i.next();
        if (hit instanceof FastHit) {
            FastHit fastHit = (FastHit) hit;
            if (!fastHit.isFilled(summaryClass)) {
                Query q = fastHit.getQuery();
                if (q == null) {
                    // fallback for untagged hits
                    q = result.hits().getQuery();
                }
                int idx = queryMap.indexOf(q);
                if (idx < 0) {
                    idx = queryMap.size();
                    Result r = new Result(q);
                    parts.add(r);
                    queryMap.add(q);
                }
                parts.get(idx).hits().add(fastHit);
            }
        }
    }
    return parts;
}
Also used : ErrorHit(com.yahoo.search.result.ErrorHit) Hit(com.yahoo.search.result.Hit) Query(com.yahoo.search.Query) ArrayList(java.util.ArrayList) TinyIdentitySet(com.yahoo.collections.TinyIdentitySet) Result(com.yahoo.search.Result)

Aggregations

TinyIdentitySet (com.yahoo.collections.TinyIdentitySet)1 Query (com.yahoo.search.Query)1 Result (com.yahoo.search.Result)1 ErrorHit (com.yahoo.search.result.ErrorHit)1 Hit (com.yahoo.search.result.Hit)1 ArrayList (java.util.ArrayList)1