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; }
private Item checkBlock(BlockItem b, StemContext context) { if (b instanceof PrefixItem || !b.isWords()) return (Item) b; if (b.isFromQuery() && !b.isStemmed()) { Index index = context.indexFacts.getIndex(b.getIndexName()); StemMode stemMode = index.getStemMode(); if (stemMode != StemMode.NONE) return stem(b, context, index); } return (Item) b; }
CompositeItem composite; List<StemList> segments = linguistics.getStemmer().stem(current.stringValue(), index.getStemMode(), context.language); String indexName = current.getIndexName(); Substring substring = getOffsets(current);