summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/query
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-10-12 08:55:19 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-10-12 09:12:05 +0200
commit1cb581c8873591316fd20927931e24efc3e5837d (patch)
tree878d779e55224791e199a2ca4326d8983aca8fa9 /container-search/src/main/java/com/yahoo/search/query
parent09489728d0912761649106f00d7837281b272a76 (diff)
- Use a common scratchpad for serializing the different parts of the query.
- Use a threadlocal for the scratchpad. This avoids costly resizing, or initialiing too large buffer for every query. Using a thread local is fine now that we limit the number of search threads to a reasonable number = #cores * 2.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/query')
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/QueryTree.java30
1 files changed, 12 insertions, 18 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
index 6326097d9bd..1cc2b98c65b 100644
--- a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
+++ b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
@@ -140,22 +140,18 @@ public class QueryTree extends CompositeItem {
else if (b == null || b instanceof NullItem) {
return a;
}
- else if (a instanceof NotItem && b instanceof NotItem) {
- NotItem notItemA = (NotItem)a;
- NotItem notItemB = (NotItem)b;
+ else if (a instanceof NotItem notItemA && b instanceof NotItem notItemB) {
NotItem combined = new NotItem();
combined.addPositiveItem(and(notItemA.getPositiveItem(), notItemB.getPositiveItem()));
notItemA.negativeItems().forEach(item -> combined.addNegativeItem(item));
notItemB.negativeItems().forEach(item -> combined.addNegativeItem(item));
return combined;
}
- else if (a instanceof NotItem){
- NotItem notItem = (NotItem)a;
+ else if (a instanceof NotItem notItem){
notItem.addPositiveItem(b);
return a;
}
- else if (b instanceof NotItem){
- NotItem notItem = (NotItem)b;
+ else if (b instanceof NotItem notItem){
notItem.addPositiveItem(a);
return notItem;
}
@@ -179,17 +175,16 @@ public class QueryTree extends CompositeItem {
}
private static void getPositiveTerms(Item item, List<IndexedItem> terms) {
- if (item instanceof NotItem) {
- getPositiveTerms(((NotItem) item).getPositiveItem(), terms);
- } else if (item instanceof PhraseItem) {
- PhraseItem pItem = (PhraseItem)item;
- terms.add(pItem);
- } else if (item instanceof CompositeItem) {
- for (Iterator<Item> i = ((CompositeItem) item).getItemIterator(); i.hasNext();) {
+ if (item instanceof NotItem notItem) {
+ getPositiveTerms(notItem.getPositiveItem(), terms);
+ } else if (item instanceof PhraseItem phraseItem) {
+ terms.add(phraseItem);
+ } else if (item instanceof CompositeItem compositeItem) {
+ for (Iterator<Item> i = compositeItem.getItemIterator(); i.hasNext();) {
getPositiveTerms(i.next(), terms);
}
- } else if (item instanceof TermItem) {
- terms.add((TermItem)item);
+ } else if (item instanceof TermItem termItem) {
+ terms.add(termItem);
}
}
@@ -203,8 +198,7 @@ public class QueryTree extends CompositeItem {
private int countItemsRecursively(Item item) {
int children = 0;
- if (item instanceof CompositeItem) {
- CompositeItem composite = (CompositeItem)item;
+ if (item instanceof CompositeItem composite) {
for (ListIterator<Item> i = composite.getItemIterator(); i.hasNext(); ) {
children += countItemsRecursively(i.next());
}