/** Returns the number of actual *positive* terms in this */ @Override public int getTermCount() { Item positive = getPositiveItem(); return positive == null ? 0 : positive.getTermCount(); }
public 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); } }
/** * Convenience method for adding a positive item. * If a positive item is already present * the positive item becomes an AndItem with the items added */ public void addPositiveItem(Item item) { if (getPositiveItem() == null) { setPositiveItem(item); } else if (getPositiveItem() instanceof AndItem) { ((AndItem) getPositiveItem()).addItem(item); } else { AndItem positives = new AndItem(); positives.addItem(getPositiveItem()); positives.addItem(item); setPositiveItem(positives); } }
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); } }
Item newPositive=combineItems(notItem.getPositiveItem(),second,termType); notItem.setPositiveItem(newPositive);
private void addLiterals(RankItem rankTerms, Item item, IndexFacts.Session indexFacts) { if (item == null) return; if (item instanceof NotItem) { addLiterals(rankTerms, ((NotItem) item).getPositiveItem(), indexFacts); } else if (item instanceof CompositeItem) { for (Iterator<Item> i = ((CompositeItem)item).getItemIterator(); i.hasNext(); ) addLiterals(rankTerms, i.next(), indexFacts); } else if (item instanceof TermItem) { TermItem termItem = (TermItem)item; Index index = indexFacts.getIndex(termItem.getIndexName()); if (index.getLiteralBoost()) rankTerms.addItem(new WordItem(toLowerCase(termItem.getRawWord()), index.getName() + "_literal")); } }
private static CanonicalizationResult canonicalizeThis(Item item, ListIterator<Item> parentIterator) { if (item instanceof NullItem) parentIterator.remove(); if ( ! (item instanceof CompositeItem)) return CanonicalizationResult.success(); CompositeItem composite = (CompositeItem)item; boolean replacedByFalse = collapseFalse(composite, parentIterator); if (replacedByFalse) return CanonicalizationResult.success(); collapseLevels(composite); if (composite instanceof EquivItem) { removeDuplicates((EquivItem) composite); } else if (composite instanceof RankItem) { makeDuplicatesCheap((RankItem)composite); } else if (composite instanceof NotItem) { if (((NotItem) composite).getPositiveItem() == null) return CanonicalizationResult.error("Can not search for only negative items"); } if (composite.getItemCount() == 0) parentIterator.remove(); if (composite.getItemCount() == 1 && ! (composite instanceof NonReducibleCompositeItem)) { if (composite instanceof PhraseItem || composite instanceof PhraseSegmentItem) composite.getItem(0).setWeight(composite.getWeight()); parentIterator.set(composite.getItem(0)); } return CanonicalizationResult.success(); }
private static CompositeItem extractAndNot(AndItem parent) { NotItem theOnlyNot = null; for (int i = 0; i < parent.getItemCount(); i++) { Item child = parent.getItem(i); if (child instanceof NotItem) { NotItem thisNot = (NotItem) child; parent.setItem(i, thisNot.getPositiveItem()); if (theOnlyNot == null) { theOnlyNot = thisNot; theOnlyNot.setPositiveItem(parent); } else { for (int j=1; j < thisNot.getItemCount(); j++) { theOnlyNot.addNegativeItem(thisNot.getItem(j)); } } } } return (theOnlyNot != null) ? theOnlyNot : parent; }
} else if (topLevelItem instanceof RankItem) { removeNot((RankItem) topLevelItem); return combineItems(topLevelItem, not.getPositiveItem()); if (not != null && not.getPositiveItem() == null) {