private InternalSearchHits modifyHits(List<SearchResultModifier> modifiers, InternalSearchHits hits) { for (final SearchResultModifier modifier : modifiers) { hits = modifier.modify(hits); } InternalSearchHit[] searchHits = sortResults(hits); return new InternalSearchHits(searchHits, hits.getTotalHits(), hits.maxScore()); }
private InternalSearchHit[] sortResults(InternalSearchHits hits) { final InternalSearchHit[] searchHits = hits.internalHits(); Arrays.sort(searchHits, new Comparator<InternalSearchHit>() { @Override public int compare(InternalSearchHit o1, InternalSearchHit o2) { if (o1 == null && o2 != null) return -1; else if (o1 != null && o2 == null) return 1; else if (o1 == null && o2 == null) return 0; else if (o1.getScore() > o2.getScore()) return -1; else if (o1.getScore() < o2.getScore()) return 1; else return 0; } }); return searchHits; }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); id = in.readLong(); hits = InternalSearchHits.readSearchHits(in, InternalSearchHits.streamContext().streamShardTarget(StreamContext.ShardTargetType.NO_STREAM)); }
public static InternalSearchHits readSearchHits(StreamInput in) throws IOException { InternalSearchHits hits = new InternalSearchHits(); hits.readFrom(in); return hits; }
@Override public InternalSearchHits modify(final InternalSearchHits hits) { Set<String> remoteFilter = getFilteredItems(); final InternalSearchHit[] searchHits = hits.internalHits(); Map<String, InternalSearchHit> hitMap = new HashMap<>(); for (InternalSearchHit hit : searchHits) { : (k - from) > 0 ? (k - from) : 0; if (arraySize == 0) { return new InternalSearchHits(new InternalSearchHit[0], 0, 0); return new InternalSearchHits(newSearchHits, totalSize, hits.maxScore());
public static InternalSearchHits empty() { // We shouldn't use static final instance, since that could directly be returned by native transport clients return new InternalSearchHits(EMPTY, 0, 0); }
@Override public InternalSearchHits modify(final InternalSearchHits hits) { final InternalSearchHit[] searchHits = hits.internalHits(); Map<String, InternalSearchHit> hitMap = new HashMap<>(); for (InternalSearchHit hit : searchHits) { : (searchHits.length - from) > 0 ? (searchHits.length - from) : 0; if (arraySize == 0) { return new InternalSearchHits(new InternalSearchHit[0], 0, 0); return new InternalSearchHits(newSearchHits.toArray(new InternalSearchHit[arraySize]), totalHitsSize, maxScore);
position = tracker[scoreDoc.shardIndex]++; } while (shardDocs[scoreDoc.shardIndex].scoreDocs[position] != scoreDoc); hits[i] = (InternalSearchHit) shardHits[scoreDoc.shardIndex].getAt(position); return new InternalTopHits(name, from, size, reducedTopDocs, new InternalSearchHits(hits, reducedTopDocs.totalHits, reducedTopDocs.getMaxScore()), pipelineAggregators(), getMetaData());
private InternalSearchHits readHits(ChannelBufferStreamInput in) throws IOException { if (logger.isDebugEnabled()) { logger.debug("Reading hits..."); } return readSearchHits(in); }
@Override public float getMaxScore() { return maxScore(); }
public static InternalSearchResponse empty() { return new InternalSearchResponse(InternalSearchHits.empty(), null, null, null, false, null); }
public static InternalSearchHits fromXContent(final Map<String, Object> map) { if (!map.containsKey("hits")) { return null; } else { Map<String, Object> hitsMap = nodeMapValue(map.get("hits"), String.class, Object.class); final long totalHits = nodeLongValue(hitsMap.get("total")); final float maxScore = hitsMap.get("max_score") != null ? nodeFloatValue(hitsMap.get("max_score")) : Float.NaN; List<InternalSearchHit> internalSearchHits = Lists.newArrayList(); if (hitsMap.containsKey("hits")) { List<Object> hitsList = nodeListValue(hitsMap.get("hits"), Object.class); for (Object hit : hitsList) { internalSearchHits.add(InternalSearchHitHelper.fromXContent(nodeMapValue(hit, String.class, Object.class))); } } return new InternalSearchHits(internalSearchHits.toArray(new InternalSearchHit[internalSearchHits.size()]), totalHits, maxScore); } }
if (index < fetchResult.hits().internalHits().length) { InternalSearchHit searchHit = fetchResult.hits().internalHits()[index]; searchHit.score(shardDoc.score); searchHit.shard(fetchResult.shardTarget()); InternalSearchHits searchHits = new InternalSearchHits(hits.toArray(new InternalSearchHit[hits.size()]), totalHits, maxScore);
public static InternalSearchHits readSearchHits(StreamInput in, StreamContext context) throws IOException { InternalSearchHits hits = new InternalSearchHits(); hits.readFrom(in, context); return hits; }
@Override protected void doReadFrom(StreamInput in) throws IOException { from = in.readVInt(); size = in.readVInt(); topDocs = Lucene.readTopDocs(in); assert topDocs != null; searchHits = InternalSearchHits.readSearchHits(in); }
@Override public InternalTopHits buildEmptyAggregation() { TopDocs topDocs; if (subSearchContext.sort() != null) { topDocs = new TopFieldDocs(0, new FieldDoc[0], subSearchContext.sort().getSort(), Float.NaN); } else { topDocs = Lucene.EMPTY_TOP_DOCS; } return new InternalTopHits(name, subSearchContext.from(), subSearchContext.size(), topDocs, InternalSearchHits.empty(), pipelineAggregators(), metaData()); }
public static InternalSearchHits fromXContent(final Map<String, Object> map) { if (!map.containsKey("hits")) { return null; } else { Map<String, Object> hitsMap = nodeMapValue(map.get("hits"), String.class, Object.class); final long totalHits = nodeLongValue(hitsMap.get("total")); final float maxScore = hitsMap.get("max_score") != null ? nodeFloatValue(hitsMap.get("max_score")) : Float.NaN; List<InternalSearchHit> internalSearchHits = Lists.newArrayList(); if (hitsMap.containsKey("hits")) { List<Object> hitsList = nodeListValue(hitsMap.get("hits"), Object.class); for (Object hit : hitsList) { internalSearchHits.add(InternalSearchHitHelper.fromXContent(nodeMapValue(hit, String.class, Object.class))); } } return new InternalSearchHits(internalSearchHits.toArray(new InternalSearchHit[internalSearchHits.size()]), totalHits, maxScore); } }
@Override public void readFrom(StreamInput in) throws IOException { hits = readSearchHits(in); if (in.readBoolean()) { aggregations = InternalAggregations.readAggregations(in); } if (in.readBoolean()) { suggest = Suggest.readSuggest(Suggest.Fields.SUGGEST, in); } timedOut = in.readBoolean(); terminatedEarly = in.readOptionalBoolean(); if (in.getVersion().onOrAfter(Version.V_2_2_0) && in.readBoolean()) { profileResults = new InternalProfileShardResults(in); } else { profileResults = null; } }
fetchPhase.execute(innerHits); FetchSearchResult fetchResult = innerHits.fetchResult(); InternalSearchHit[] internalHits = fetchResult.fetchResult().hits().internalHits(); for (int i = 0; i < internalHits.length; i++) { ScoreDoc scoreDoc = topDocs.scoreDocs[i];
public void start() { if (scrollId.getContext().length == 0) { final InternalSearchResponse internalResponse = new InternalSearchResponse(new InternalSearchHits(InternalSearchHits.EMPTY, Long.parseLong(this.scrollId.getAttributes().get("total_hits")), 0.0f), null, null, null, false, null); listener.onResponse(new SearchResponse(internalResponse, request.scrollId(), 0, 0, 0l, buildShardFailures()));