问题描述
我正在尝试创建一个 Vespa 查询,我想在其中设置 targetHits 的速率限制。例如,下面的查询有一个常数 3 targetHits:
'yql': 'select id,title from sources * where \
([{"targetHits":3}]nearestNeighbor(embeddings_vector,query_embeddings_vector));'
有什么办法可以在每次通话中动态设置这个号码吗?
还有hits和targetHits有什么区别?是否与最低要求和期望要求有关?
非常感谢。
解决方法
我不确定你所说的 targetHits 速率限制是什么意思,但一般来说
- 如果您使用多节点集群运行 Vespa,则 targetHits 是每个内容节点
- targetHits 是您希望向排名配置文件的第一阶段排名函数公开的点击次数
- hits 仅控制在 SERP 响应中返回的数量。要求每个内容节点的 targethits 500 进行排名是完全有效的,最后只要求全球最佳 10(根据您的排名资料)
有什么办法可以在每次通话中动态设置这个号码吗?
您当然可以修改您发送的 SQL,但更好的方法通常是创建一个 Searcher 作为您的应用程序的一部分,以编程方式修改它,例如:
public class TargetHitsSearcher extends Searcher {
@Override
public Result search(Query query,Execution execution) {
Item root = query.getModel().getQueryTree().getRoot();
if (root instanceof NearestNeighborItem) { // In general; search recursively
int target = query.properties().getInteger("myTarget");
((NearestNeighborItem)root).setTargetNumHits(target);
}
return execution.search(query);
}
}