diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2023-09-08 16:20:47 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2023-09-08 16:20:47 +0200 |
commit | cbf103929d33dc697cd5fac94adfba36ed501dc9 (patch) | |
tree | deb10b43ce721d4e764a4392e0386ed2ddce1129 /container-search/src/main/java/com/yahoo/prelude/query | |
parent | 4dd974027190e5f378556ebd4816fc1e7ebe7b21 (diff) |
Synonym expansions
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query')
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(); |