在查询文本中传递排名功能

时间:2018-03-16 06:51:49

标签: vespa

我有一个场景,其中外部代理动态生成排名函数,我希望将其作为查询参数传递,而不是在搜索定义文件中静态定义它,类似于 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实现这一目标?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

在它们之间进行选择