public StemList(String... stems) { super(); this.stems = new ArrayList<>(Math.max(stems.length, 3)); for (String word : stems) { add(word); } }
private void findStems(Token token, List<StemList> out) { int len; if (token.isSpecialToken() || (len = token.getNumComponents()) == 0) { if (token.isIndexable()) { StemList word = new StemList(); word.add(token.getTokenString()); // takes care of getStem(0) for (int i = 1; i < token.getNumStems(); i++) { word.add(token.getStem(i)); } out.add(word); } } else { for (int i = 0; i < len; ++i) { findStems(token.getComponent(i), out); } } } }
private TaggableItem singleWordSegment(BlockItem current, StemList segment, Index index, Substring substring, boolean insidePhrase) { String indexName = current.getIndexName(); if (insidePhrase == false && ((index.getLiteralBoost() || index.getStemMode() == StemMode.ALL))) { List<Alternative> terms = new ArrayList<>(segment.size() + 1); terms.add(new Alternative(current.stringValue(), 1.0d)); for (String term : segment) { terms.add(new Alternative(term, 0.7d)); } WordAlternativesItem alternatives = new WordAlternativesItem(indexName, current.isFromQuery(), substring, terms); if (alternatives.getAlternatives().size() > 1) { return alternatives; } } WordItem first = singleStemSegment((Item) current, segment.get(0), indexName, substring); return first; }