use of com.yahoo.prelude.query.TaggableItem in project vespa by vespa-engine.
the class Model method addSignificances.
private void addSignificances(List<Item> candidates, Ranking ranking) {
for (Item candidate : candidates) {
TaggableItem t = (TaggableItem) candidate;
if (!t.hasExplicitSignificance())
continue;
String name = "vespa.term." + t.getUniqueID() + ".significance";
ranking.getProperties().put(name, String.valueOf(t.getSignificance()));
}
}
use of com.yahoo.prelude.query.TaggableItem in project vespa by vespa-engine.
the class Model method addLabels.
private void addLabels(List<Item> candidates, Ranking ranking) {
for (Item candidate : candidates) {
String label = candidate.getLabel();
if (label != null) {
String name = "vespa.label." + label + ".id";
TaggableItem t = (TaggableItem) candidate;
ranking.getProperties().put(name, String.valueOf(t.getUniqueID()));
}
}
}
use of com.yahoo.prelude.query.TaggableItem in project vespa by vespa-engine.
the class YqlParser method instantiateWordItem.
@NonNull
private Item instantiateWordItem(String field, String rawWord, OperatorNode<ExpressionOperator> ast, Class<?> parent, SegmentWhen segmentPolicy, boolean exactMatch, Language language) {
String wordData = rawWord;
if (getAnnotation(ast, NFKC, Boolean.class, Boolean.FALSE, "setting for whether to NFKC normalize input data")) {
// NOTE: If this is set to FALSE (default), we will still NFKC normalize text data
// during tokenization/segmentation, as that is always turned on also on the indexing side.
wordData = normalizer.normalize(wordData);
}
boolean fromQuery = getAnnotation(ast, IMPLICIT_TRANSFORMS, Boolean.class, Boolean.TRUE, IMPLICIT_TRANSFORMS_DESCRIPTION);
boolean prefixMatch = getAnnotation(ast, PREFIX, Boolean.class, Boolean.FALSE, "setting for whether to use prefix match of input data");
boolean suffixMatch = getAnnotation(ast, SUFFIX, Boolean.class, Boolean.FALSE, "setting for whether to use suffix match of input data");
boolean substrMatch = getAnnotation(ast, SUBSTRING, Boolean.class, Boolean.FALSE, "setting for whether to use substring match of input data");
Preconditions.checkArgument((prefixMatch ? 1 : 0) + (substrMatch ? 1 : 0) + (suffixMatch ? 1 : 0) < 2, "Only one of prefix, substring and suffix can be set.");
@NonNull final TaggableItem wordItem;
if (exactMatch) {
wordItem = new ExactStringItem(wordData, fromQuery);
} else if (prefixMatch) {
wordItem = new PrefixItem(wordData, fromQuery);
} else if (suffixMatch) {
wordItem = new SuffixItem(wordData, fromQuery);
} else if (substrMatch) {
wordItem = new SubstringItem(wordData, fromQuery);
} else {
switch(segmentPolicy) {
case NEVER:
wordItem = new WordItem(wordData, fromQuery);
break;
case POSSIBLY:
if (shouldResegmentWord(field, fromQuery)) {
wordItem = resegment(field, ast, wordData, fromQuery, parent, language);
} else {
wordItem = new WordItem(wordData, fromQuery);
}
break;
case ALWAYS:
wordItem = resegment(field, ast, wordData, fromQuery, parent, language);
break;
default:
throw new IllegalArgumentException("Unexpected segmenting rule: " + segmentPolicy);
}
}
if (wordItem instanceof WordItem) {
prepareWord(field, ast, fromQuery, (WordItem) wordItem);
}
if (// mark the language used, unless it's the default
language != Language.ENGLISH)
((Item) wordItem).setLanguage(language);
return (Item) leafStyleSettings(ast, wordItem);
}
use of com.yahoo.prelude.query.TaggableItem in project vespa by vespa-engine.
the class Model method setUniqueIDs.
private List<Item> setUniqueIDs(Item root) {
List<Item> items = new ArrayList<>();
collectTaggableItems(root, items);
int id = 1;
for (Item i : items) {
TaggableItem t = (TaggableItem) i;
t.setUniqueID(id++);
}
return items;
}
use of com.yahoo.prelude.query.TaggableItem in project vespa by vespa-engine.
the class Model method addConnectivityRankProperties.
private void addConnectivityRankProperties(List<Item> connectedItems, Ranking ranking) {
for (Item link : connectedItems) {
TaggableItem t = (TaggableItem) link;
Item connectedTo = t.getConnectedItem();
if (connectedTo != null && strictContains(connectedTo, connectedItems)) {
TaggableItem t2 = (TaggableItem) connectedTo;
String name = "vespa.term." + t.getUniqueID() + ".connexity";
ranking.getProperties().put(name, String.valueOf(t2.getUniqueID()));
ranking.getProperties().put(name, String.valueOf(t.getConnectivity()));
}
}
}
Aggregations