/** * Create an empty result. * A source creating a result is <b>required</b> to call * {@link #setTotalHitCount} before releasing this result. * * @param query the query which produced this result * @param hits the hit container which this will return from {@link #hits()} */ @SuppressWarnings("deprecation") public Result(Query query, HitGroup hits) { super(query); if (query==null) throw new NullPointerException("The query reference in a result cannot be null"); this.hits=hits; hits.setQuery(query); if (query.getRanking().getSorting() != null) { setHitOrderer(new HitSortOrderer(query.getRanking().getSorting())); } }
private void serializeSorting(StringBuilder yql) { yql.append(" order by "); int initLen = yql.length(); for (FieldOrder f : getRanking().getSorting().fieldOrders()) { if (yql.length() > initLen) { yql.append(", ");
private boolean shouldBeDegraded(Query query, IndexFacts.Session indexFacts) { if (query.getRanking().getSorting() == null) return false; if (query.getRanking().getSorting().fieldOrders().isEmpty()) return false; if ( ! query.getSelect().getGrouping().isEmpty()) return false; if ( ! query.properties().getBoolean(DEGRADING, true)) return false; Index index = indexFacts.getIndex(query.getRanking().getSorting().fieldOrders().get(0).getFieldName()); if (index == null) return false; if ( ! index.isFastSearch()) return false; if ( ! index.isNumerical()) return false; return true; }
@Override public Result search(Query query, Execution execution) { List<FieldOrder> s = (query.getRanking().getSorting() != null) ? query.getRanking().getSorting().fieldOrders() : null; if (s == null) { return execution.search(query); } for (FieldOrder f : s) { if (RANK.equals(f.getFieldName())) { return execution.search(query); } } query.getRanking().setProfile(UNRANKED); return execution.search(query); }
if (getRanking().getSorting() != null && getRanking().getSorting().fieldOrders().size() > 0) { serializeSorting(yql);
throw new IllegalArgumentException("old aggregation no longer exists!"); case 3: if (query.getRanking().getSorting() != null) ed.setReturned(query.getRanking().getSorting().encode(buf)); else ed.setReturned(0);
private int getFeatureInt(boolean sendSessionId) { int features = QF_PARSEDQUERY | QF_RANKP; // this bitmask means "parsed query" in query packet. // And rank properties. Both are always present features |= (query.getRanking().getSorting() != null) ? QF_SORTSPEC : 0; features |= (query.getRanking().getLocation() != null) ? QF_LOCATION : 0; features |= (query.hasEncodableProperties()) ? QF_PROPERTIES : 0; features |= GroupingExecutor.hasGroupingList(query) ? QF_GROUPSPEC : 0; features |= (sendSessionId) ? QF_SESSIONID : 0; return features; }
private Result sortAndTrimResults(Result result, Query q, int offset, int hits, Execution execution) { if (q.getRanking().getSorting() != null) { execution.fillAttributes(result); // Always correct as we can only sort on attributes result.hits().sort(); } result.hits().trim(offset, hits); return result; }
int sortSpecLengthPosition=buffer.position(); buffer.putInt(0); int sortSpecLength = query.getRanking().getSorting().encode(buffer); buffer.putInt(sortSpecLengthPosition, sortSpecLength);
if (query.getRanking().getSorting() != null) { s.append(" sortspec=") .append(query.getRanking().getSorting().fieldOrders().toString());
private void setDegradation(Query query) { query.trace("Using sorting degrading for performance - totalHits will be wrong. " + "Turn off with sorting.degrading=false.", 2); Sorting.FieldOrder primarySort = query.getRanking().getSorting().fieldOrders().get(0); // ensured above MatchPhase matchPhase = query.getRanking().getMatchPhase(); matchPhase.setAttribute(primarySort.getFieldName()); matchPhase.setAscending(primarySort.getSortOrder() == Sorting.Order.ASCENDING); if (matchPhase.getMaxHits() == null) matchPhase.setMaxHits(decideDefaultMaxHits(query)); }
if (key.last().equals(Ranking.LOCATION)) return ranking.getLocation(); if (key.last().equals(Ranking.PROFILE)) return ranking.getProfile(); if (key.last().equals(Ranking.SORTING)) return ranking.getSorting(); if (key.last().equals(Ranking.FRESHNESS)) return ranking.getFreshness(); if (key.last().equals(Ranking.QUERYCACHE)) return ranking.getQueryCache();
private ErrorMessage validate(Query query) { Sorting sorting = query.getRanking().getSorting(); List<Sorting.FieldOrder> l = (sorting != null) ? sorting.fieldOrders() : null;
Sorting sorting = query.getRanking().getSorting(); if (sorting != null && sorting.fieldOrders().size() > 1) { query.trace("Can not use grouping for deduping with multi-level sorting.", 3);
if (query.getRanking().getSorting() != null) { encodeQueryData(query, 3, ed); params.setLibraryParameter("sort", ed.getEncodedData());
.getRanking().getSorting() == null ? null : query.getRanking() .getSorting().fieldOrders());