aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-10-13 14:34:57 +0200
committerGitHub <noreply@github.com>2022-10-13 14:34:57 +0200
commit830b0c9f2511bdeebc13f84f36466225faceb1d5 (patch)
treeadd322cbff0e52df533a82e45101775465ba4454 /container-search
parent918adc0fa08d999a151a5d07a83d99f54567c1bd (diff)
parent0e4994ce8090ec4f9f8ae42942eef1870e360277 (diff)
Merge pull request #24425 from vespa-engine/balder/deduplicate-code
Various cleanup and code deduplication.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java31
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/SortDataHitSorter.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/LeanHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Sorting.java6
6 files changed, 15 insertions, 44 deletions
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> summaryData() {
- return Collections.unmodifiableList(summaries);
- }
-
/**
* Returns values for the features listed in
* <a href="https://docs.vespa.ai/en/reference/schema-reference.html#summary-features">summary-features</a>
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<LeanHit> merged, int needed, List<LeanHit> 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<LeanHit> {
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