public int getNumWords() { int numWords = 0; for (Iterator<Item> j = getItemIterator(); j.hasNext();) { numWords += ((IndexedItem) j.next()).getNumWords(); } return numWords; }
private boolean hasOverlappingTokens(PhraseItem phrase) { boolean has = false; for (Iterator<Item> i = phrase.getItemIterator(); i.hasNext(); ) { Item segment = i.next(); if (segment instanceof PhraseSegmentItem) has = hasOverlappingTokens((PhraseSegmentItem) segment); if (has) return true; } return has; }
public String getIndexedString() { StringBuilder buf = new StringBuilder(); for (Iterator<Item> i = getItemIterator(); i.hasNext();) { IndexedItem indexedItem = (IndexedItem) i.next(); buf.append(indexedItem.getIndexedString()); if (i.hasNext()) { buf.append(' '); } } return buf.toString(); }
public void setIndexName(String index) { super.setIndexName(index); for (Iterator<Item> i = getItemIterator(); i.hasNext();) { IndexedItem word = (IndexedItem) i.next(); word.setIndexName(index); } }
protected void appendBodyString(StringBuilder buffer) { appendIndexString(buffer); buffer.append("\""); for (Iterator<Item> i = getItemIterator(); i.hasNext();) { Item item = i.next(); if (item instanceof WordItem) { WordItem wordItem = (WordItem) item; buffer.append(wordItem.getWord()); } else if (item instanceof PhraseSegmentItem) { PhraseSegmentItem seg = (PhraseSegmentItem) item; seg.appendContentsString(buffer); } else { buffer.append(item.toString()); } if (i.hasNext()) { buffer.append(" "); } } buffer.append("\""); }
public int encode(ByteBuffer buffer) { encodeThis(buffer); int itemCount = 1; for (Iterator<Item> i = getItemIterator(); i.hasNext();) { Item subitem = i.next(); if (subitem instanceof PhraseSegmentItem) { PhraseSegmentItem seg = (PhraseSegmentItem) subitem; // "What encode does, minus what encodeThis does" itemCount += seg.encodeContent(buffer); } else { itemCount += subitem.encode(buffer); } } return itemCount; }
@Override public void addItem(int index, Item item) { if (item instanceof WordItem || item instanceof PhraseSegmentItem) { addIndexedItem(index, (IndexedItem) item); } else if (item instanceof IntItem) { addIndexedItem(index, convertIntToWord(item)); } else if (item instanceof PhraseItem) { PhraseItem phrase = (PhraseItem) item; for (Iterator<Item> i = phrase.getItemIterator(); i.hasNext();) { addIndexedItem(index++, (WordItem) i.next()); } } else { throw new IllegalArgumentException("Can not add " + item + " to a phrase"); } }
@Override public Item setItem(int index, Item item) { if (item instanceof WordItem || item instanceof PhraseSegmentItem) { return setIndexedItem(index, (IndexedItem) item); } else if (item instanceof IntItem) { return setIndexedItem(index, convertIntToWord(item)); } else if (item instanceof PhraseItem) { PhraseItem phrase = (PhraseItem) item; Iterator<Item> i = phrase.getItemIterator(); // we assume we don't try to add empty phrases IndexedItem firstItem = (IndexedItem) i.next(); Item toReturn = setIndexedItem(index++, firstItem); while (i.hasNext()) { addIndexedItem(index++, (IndexedItem) i.next()); } return toReturn; } else { throw new IllegalArgumentException("Can not add " + item + " to a phrase"); } }
private Item normalizePhrase(Language language, IndexFacts.Session indexFacts, PhraseItem phrase) { if ( ! indexFacts.getIndex(phrase.getIndexName()).getNormalize()) return phrase; for (ListIterator<Item> i = phrase.getItemIterator(); i.hasNext();) { IndexedItem content = (IndexedItem) i.next(); if (content instanceof TermItem) { normalizeWord(language, indexFacts, (TermItem) content, i); } else { PhraseSegmentItem segment = (PhraseSegmentItem) content; for (ListIterator<Item> j = segment.getItemIterator(); j.hasNext();) normalizeWord(language, indexFacts, (TermItem) j.next(), j); } } return phrase; }
/** * Adds subitem. The word will have its index name set to the index name of * this phrase. If the item is a word, it will simply be added, if the item * is a phrase, each of the words of the phrase will be added. * * @throws IllegalArgumentException * if the given item is not a WordItem or PhraseItem */ public void addItem(Item item) { if (item instanceof WordItem || item instanceof PhraseSegmentItem || item instanceof WordAlternativesItem) { addIndexedItem((IndexedItem) item); } else if (item instanceof IntItem) { addIndexedItem(convertIntToWord(item)); } else if (item instanceof PhraseItem) { PhraseItem phrase = (PhraseItem) item; for (Iterator<Item> i = phrase.getItemIterator(); i.hasNext();) { addIndexedItem((IndexedItem) i.next()); } } else { throw new IllegalArgumentException("Can not add " + item + " to a phrase"); } }