/** Creates an empty phrase which will search the given index */ public PhraseItem(String indexName) { setIndexName(indexName); }
/** * Returns the item to insert from these referenced matches, or null if none * * @param label the label of the matches */ public Item toItem(String label) { if (matches.size()==0) return null; if (matches.size()==1) return matches.get(0).toItem(label); PhraseItem phrase=new PhraseItem(); // TODO: Somehow allow AND items instead here phrase.setIndexName(label); for (Iterator<Match> i=matches.iterator(); i.hasNext(); ) { phrase.addItem(i.next().toItem(label)); } return phrase; }
/** * Convert segment items into their mutable counterpart, do not update query tree. * Non-segment items are returned directly. * * @return a mutable CompositeItem instance */ private CompositeItem convertSegmentItem(CompositeItem item) { if (!(item instanceof SegmentItem)) { return item; } CompositeItem converted = null; if (item instanceof AndSegmentItem) { converted = new AndItem(); } else if (item instanceof PhraseSegmentItem) { PhraseItem p = new PhraseItem(); PhraseSegmentItem old = (PhraseSegmentItem) item; p.setIndexName(old.getIndexName()); converted = p; } else { // TODO: Do something else than nothing for unknowns? return item; } for (Iterator<Item> i = item.getItemIterator(); i.hasNext();) { converted.addItem(i.next()); } return converted; }
/** * Add custom highlight phrase * @param field Field name * @param phrase List of terms to be highlighted as a phrase */ public void addHighlightPhrase(String field, List<String> phrase) { PhraseItem pi = new PhraseItem(); pi.setIndexName(field); for (String s : phrase) { pi.addItem(new WordItem(toLowerCase(s), field, true)); } addHighlightItem(field, pi); }
public void replace() { PhraseItem phrase=new PhraseItem(); TermItem firstWord=(TermItem)owner.setItem(startIndex,phrase); replace(firstWord,0); phrase.setIndexName(firstWord.getIndexName()); phrase.addItem(firstWord); for (int i=1; i<length; i++) { TermItem followingWord=(TermItem)owner.removeItem(startIndex+1); replace(followingWord,i); phrase.addItem(followingWord); } }
phrase.setIndexName(field); for (OperatorNode<ExpressionOperator> word : ast.<List<OperatorNode<ExpressionOperator>>> getArgument(1)) { if (word.getOperator() == ExpressionOperator.CALL) {
@NonNull private Item instantiatePhraseItem(String field, String key, Inspector value) { assertHasOperator(key, PHRASE); PhraseItem phrase = new PhraseItem(); phrase.setIndexName(field); HashMap<Integer, Inspector> children = getChildrenMap(value); for (Inspector word : children.values()) { if (word.type() == STRING) phrase.addItem(new WordItem(word.asString())); else if (word.type() == OBJECT && word.field(PHRASE).valid()) phrase.addItem(instantiatePhraseItem(field, key, getChildren(word))); } return leafStyleSettings(getAnnotations(value), phrase); }
public void produce(RuleEvaluation e,int offset) { PhraseItem newPhrase=new PhraseItem(); newPhrase.setIndexName(getLabel()); for (String term : terms) newPhrase.addItem(new WordItem(term)); if (replacing) { Match matched=e.getNonreferencedMatch(0); insertMatch(e,matched,newPhrase,offset); } else { newPhrase.setWeight(getWeight()); if (e.getTraceLevel()>=6) e.trace(6,"Adding '" + newPhrase + "'"); e.addItem(newPhrase,getTermType()); } }