From 0e4994ce8090ec4f9f8ae42942eef1870e360277 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 13 Oct 2022 13:15:56 +0200 Subject: Various cleanup and code deduplication. --- .../java/com/yahoo/prelude/fastsearch/FastHit.java | 31 +++------------------- .../prelude/fastsearch/SortDataHitSorter.java | 1 - .../prelude/searcher/ValidateSortingSearcher.java | 3 +-- .../search/dispatch/InterleavedSearchInvoker.java | 16 +++++------ .../java/com/yahoo/search/dispatch/LeanHit.java | 2 +- .../main/java/com/yahoo/search/query/Sorting.java | 6 ++--- 6 files changed, 15 insertions(+), 44 deletions(-) (limited to 'container-search/src/main/java/com') diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java index 730e2393b7f..23cdff15ad9 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java @@ -4,6 +4,7 @@ package com.yahoo.prelude.fastsearch; import com.yahoo.data.access.ObjectTraverser; import com.yahoo.document.GlobalId; import com.yahoo.net.URI; +import com.yahoo.search.dispatch.LeanHit; import com.yahoo.search.query.Sorting; import com.yahoo.search.result.FeatureData; import com.yahoo.search.result.Hit; @@ -11,7 +12,6 @@ import com.yahoo.search.result.Relevance; import com.yahoo.data.access.Inspector; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -36,7 +36,7 @@ public class FastHit extends Hit { private int distributionKey; /** The local identifier of the content store for this hit on the node it originated at */ - private int partId; + private final int partId; /** The global id of this document in the backend node which produced it */ private byte[] globalId; @@ -129,16 +129,6 @@ public class FastHit extends Hit { public int getPartId() { return partId; } - /** - * Sets the part id number, which specifies the node where this hit is - * found. The row count is used to decode the part id into a column and a - * row number: the number of n least significant bits required to hold the - * highest row number are the row bits, the rest are column bits. - * - * Note: Remove partId when all dispatching happens from the container dispatcher, not fdispatch - */ - public void setPartId(int partId) { this.partId = partId; } - /** Returns the index of the node this hit originated at */ public int getDistributionKey() { return distributionKey; } @@ -167,17 +157,7 @@ public class FastHit extends Hit { if (!left.hasSortData(sorting) || !right.hasSortData(sorting)) { return 0; // cannot sort } - int i = Arrays.mismatch(left.sortData, right.sortData); - if (i < 0) { - return 0; - } - int max = Integer.min(left.sortData.length, right.sortData.length); - if (i >= max) { - return left.sortData.length - right.sortData.length; - } - int vl = (int) left.sortData[i] & 0xFF; - int vr = (int) right.sortData[i] & 0xFF; - return vl - vr; + return LeanHit.compareData(left.sortData, right.sortData); } /** For internal use */ @@ -188,11 +168,6 @@ public class FastHit extends Hit { summaries.add(0, new SummaryData(this, docsumDef, value, 1 + summaries.size())); } - /** Returns the raw summary data available in this as an unmodifiable list */ - public List summaryData() { - return Collections.unmodifiableList(summaries); - } - /** * Returns values for the features listed in * summary-features diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SortDataHitSorter.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SortDataHitSorter.java index 546a5d724a8..722e7155dc8 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SortDataHitSorter.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SortDataHitSorter.java @@ -5,7 +5,6 @@ import com.yahoo.search.query.Sorting; import com.yahoo.search.result.Hit; import com.yahoo.search.result.HitGroup; -import java.util.Collections; import java.util.Comparator; import java.util.List; diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java index 9f875347ccc..47125d198e1 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java @@ -155,8 +155,7 @@ public class ValidateSortingSearcher extends Searcher { } } } - if (f.getSorter() instanceof Sorting.UcaSorter) { - Sorting.UcaSorter sorter = (Sorting.UcaSorter) f.getSorter(); + if (f.getSorter() instanceof Sorting.UcaSorter sorter) { String locale = sorter.getLocale(); if (locale == null || locale.isEmpty()) { diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java index b4f04da5986..39be91cf3e8 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java @@ -210,17 +210,17 @@ public class InterleavedSearchInvoker extends SearchInvoker implements ResponseM indexPartial++; } } - while ((indexCurrent < current.size()) && (merged.size() < needed)) { - LeanHit currentHit = current.get(indexCurrent++); - merged.add(currentHit); - } - while ((indexPartial < partial.size()) && (merged.size() < needed)) { - LeanHit incomingHit = partial.get(indexPartial++); - merged.add(incomingHit); - } + appendRemainingIfNeeded(merged, needed, current, indexCurrent); + appendRemainingIfNeeded(merged, needed, partial, indexPartial); return merged; } + private void appendRemainingIfNeeded(List merged, int needed, List hits, int index) { + while ((index < hits.size()) && (merged.size() < needed)) { + merged.add(hits.get(index++)); + } + } + private void ejectInvoker(SearchInvoker invoker) { invokers.remove(invoker); invoker.release(); diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/LeanHit.java b/container-search/src/main/java/com/yahoo/search/dispatch/LeanHit.java index bd0415fa449..f80cebe90c4 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/LeanHit.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/LeanHit.java @@ -51,7 +51,7 @@ public class LeanHit implements Comparable { return (res != 0) ? res : compareData(gid, o.gid); } - private static int compareData(byte[] left, byte[] right) { + public static int compareData(byte[] left, byte[] right) { int i = Arrays.mismatch(left, right); if (i < 0) { return 0; diff --git a/container-search/src/main/java/com/yahoo/search/query/Sorting.java b/container-search/src/main/java/com/yahoo/search/query/Sorting.java index ffaadebc443..63bc48ff804 100644 --- a/container-search/src/main/java/com/yahoo/search/query/Sorting.java +++ b/container-search/src/main/java/com/yahoo/search/query/Sorting.java @@ -6,7 +6,6 @@ import com.ibm.icu.util.ULocale; import com.yahoo.prelude.IndexFacts; import com.yahoo.processing.IllegalInputException; import com.yahoo.search.Query; -import com.yahoo.search.searchchain.Execution; import com.yahoo.text.Utf8; import java.nio.ByteBuffer; @@ -181,7 +180,6 @@ public class Sorting implements Cloneable { public int encode(ByteBuffer buffer) { int usedBytes = 0; byte[] nameBuffer; - buffer.position(); byte space = '.'; for (FieldOrder fieldOrder : fieldOrders) { if (space == ' ') { @@ -230,10 +228,10 @@ public class Sorting implements Cloneable { @Override public boolean equals(Object other) { - if (!(other instanceof AttributeSorter)) { + if (!(other instanceof AttributeSorter sorter)) { return false; } - return ((AttributeSorter) other).fieldName.equals(fieldName); + return sorter.fieldName.equals(fieldName); } @Override -- cgit v1.2.3