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())); } } }
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())); } } }
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())); } }
public boolean hasEncodableProperties() { if ( ! ranking.getProperties().isEmpty()) return true; if ( ! ranking.getFeatures().isEmpty()) return true; if ( ranking.getFreshness() != null) return true; if ( model.getSearchPath() != null) return true; if ( model.getDocumentDb() != null) return true; if ( presentation.getHighlight() != null && ! presentation.getHighlight().getHighlightItems().isEmpty()) return true; return false; }
query.getRanking().getProperties().put(sessionIdKey, query.getSessionId().toString());
if ( ! query.getRanking().getProperties().isEmpty()) { s.append(" rankproperties=") .append(query.getRanking().getProperties().toString());
/** * Encodes properties of this query. * * @param buffer the buffer to encode to * @param encodeQueryData true to encode all properties, false to only include session information, not actual query data * @return the encoded length */ public int encodeAsProperties(ByteBuffer buffer, boolean encodeQueryData) { // Make sure we don't encode anything here if we have turned the property feature off // Due to sendQuery we sometimes end up turning this feature on and then encoding a 0 int as the number of // property maps - that's ok (probably we should simplify by just always turning the feature on) if (! hasEncodableProperties()) return 0; int start = buffer.position(); int mapCountPosition = buffer.position(); buffer.putInt(0); // map count will go here int mapCount = 0; // TODO: Push down mapCount += ranking.getProperties().encode(buffer, encodeQueryData); if (encodeQueryData) mapCount += ranking.getFeatures().encode(buffer); // TODO: Push down if (encodeQueryData && presentation.getHighlight() != null) mapCount += MapEncoder.encodeStringMultiMap(Highlight.HIGHLIGHTTERMS, presentation.getHighlight().getHighlightTerms(), buffer); // TODO: Push down if (encodeQueryData) mapCount += MapEncoder.encodeSingleValue("model", "searchpath", model.getSearchPath(), buffer); mapCount += MapEncoder.encodeSingleValue(DocumentDatabase.MATCH_PROPERTY, DocumentDatabase.SEARCH_DOC_TYPE_KEY, model.getDocumentDb(), buffer); mapCount += MapEncoder.encodeMap("caches", createCacheSettingMap(), buffer); buffer.putInt(mapCountPosition, mapCount); return buffer.position() - start; }
if (key.get(1).equals(Ranking.PROPERTIES)) return ranking.getProperties().get(key.rest().rest().toString()); return query.getRanking().getFeatures().getObject(key.rest().toString()); } else if (key.first().equals("rankproperty")) { return query.getRanking().getProperties().get(key.rest().toString()); } else if (key.size()==1) { if (key.equals(Query.HITS)) return query.getHits();
setRankingFeature(query, restKey, toSpecifiedType(restKey, value, profileRegistry.getTypeRegistry().getComponent("features"))); else if (key.get(1).equals(Ranking.PROPERTIES)) ranking.getProperties().put(restKey, toSpecifiedType(restKey, value, profileRegistry.getTypeRegistry().getComponent("properties"))); else throwIllegalParameter(key.rest().toString(),Ranking.RANKING); setRankingFeature(query, key.rest().toString(), toSpecifiedType(key.rest().toString(), value, profileRegistry.getTypeRegistry().getComponent("features"))); } else if (key.first().equals("rankproperty")) { query.getRanking().getProperties().put(key.rest().toString(), toSpecifiedType(key.rest().toString(), value, profileRegistry.getTypeRegistry().getComponent("properties"))); } else if (key.size()==1) { if (key.equals(Query.HITS))