summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/query
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2023-09-08 16:20:47 +0200
committerJon Bratseth <bratseth@vespa.ai>2023-09-08 16:20:47 +0200
commitcbf103929d33dc697cd5fac94adfba36ed501dc9 (patch)
treedeb10b43ce721d4e764a4392e0386ed2ddce1129 /container-search/src/main/java/com/yahoo/prelude/query
parent4dd974027190e5f378556ebd4816fc1e7ebe7b21 (diff)
Synonym expansions
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java4
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java5
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java12
3 files changed, 19 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java b/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
index 30c02944f19..407e763c1e5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
@@ -311,6 +311,10 @@ public abstract class CompositeItem extends Item {
return getItemCount() == 1 ? Optional.of(getItem(0)) : Optional.empty();
}
+ public boolean acceptsItemsOfType(ItemType itemType) {
+ return true;
+ }
+
/** Handles mutator calls correctly */
private static class ListIteratorWrapper implements ListIterator<Item> {
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java b/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
index 43258db8963..de317ac317e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
@@ -86,6 +86,11 @@ public class EquivItem extends CompositeTaggableItem {
acceptsChildrenOfType(item.getItemType()));
}
+ @Override
+ public boolean acceptsItemsOfType(ItemType itemType) {
+ return acceptsChildrenOfType(itemType);
+ }
+
/** Returns true if this accepts child items of the given type */
public static boolean acceptsChildrenOfType(ItemType itemType) {
return itemType == ItemType.WORD ||
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
index 379dfd6bb30..09be603740f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
@@ -93,6 +93,15 @@ public class PhraseItem extends CompositeIndexedItem {
}
@Override
+ public boolean acceptsItemsOfType(ItemType itemType) {
+ return itemType == ItemType.WORD ||
+ itemType == ItemType.WORD_ALTERNATIVES ||
+ itemType == ItemType.INT ||
+ itemType == ItemType.EXACT ||
+ itemType == ItemType.PHRASE;
+ }
+
+ @Override
public void addItem(int index, Item item) {
if (item instanceof WordItem || item instanceof PhraseSegmentItem) {
addIndexedItem(index, (IndexedItem) item);
@@ -115,8 +124,7 @@ public class PhraseItem extends CompositeIndexedItem {
return setIndexedItem(index, (IndexedItem) item);
} else if (item instanceof IntItem) {
return setIndexedItem(index, convertIntToWord(item));
- } else if (item instanceof PhraseItem) {
- PhraseItem phrase = (PhraseItem) item;
+ } else if (item instanceof PhraseItem phrase) {
Iterator<Item> i = phrase.getItemIterator();
// we assume we don't try to add empty phrases
IndexedItem firstItem = (IndexedItem) i.next();