1

我有一个场景,其中外部代理动态生成排名函数,我想将其作为查询参数传递,而不是在搜索定义文件中静态定义它,就像 http://localhost:8080/search/?query=honda car&rankfeature.rankingExpression="query(title_match_weight)*matches(title)+query(tags_match_weight)*matches(tags)"&rankfeature.query(title_match_weight)=10&rankfeature.query(tags_match_weight)=20 我现在无法做到的那样。我们有解决方案在 Vespa 中实现这一目标吗?

我已经尝试foreach在 rank 表达式命令中实现此目的,但它不能提供动态具有任何功能的灵活性。

http://docs.vespa.ai/documentation/ranking.html#using-query-variables 解释了宏,我发现宏被视为排名特征,排名特征可以在查询中传递。所以这应该意味着可以在查询中传递可以在表达式中使用的宏,但这是不可能的。

4

1 回答 1

2

无法通过查询发送排名表达式(这不会很有效,因为它们(通常)是用 LLVM 等编译的)。

您不能使用固定的排名表达式并使用查询功能来加权/或打开或关闭它的不同部分吗?您还可以配置许多不同的排名表达式,并在查询时使用ranking.profile=profileName 在它们之间进行选择。

于 2018-03-16T08:56:34.497 回答