/** Returns a flattened list of all positive query terms under the given item */ public static List<IndexedItem> getPositiveTerms(Item item) { List<IndexedItem> items = new ArrayList<>(); getPositiveTerms(item,items); return items; }
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();) { getPositiveTerms(i.next(), terms); } } else if (item instanceof TermItem) { terms.add((TermItem)item); } }