如何在查询中使用“地图”数据结构

时间:2019-05-07 07:38:59

标签: vespa

我想将map包含在vespa 查询中(不是文档属性),并在expression中查找它,但是我有一些疑问。

  1. 我可以在Vespa 查询中使用map吗?
  2. 如果可能,如何在expression中查找元素?
  3. 如果不可能,我可以改用mapped tensor类型吗?

2 个答案:

答案 0 :(得分:2)

要将稀疏值传递给分别访问它们的排名表达式(例如XGBoost或其他GBTD模型),请将它们作为单独的查询功能传递:query(mykey)等。

在HTTP请求中:

ranking.features.query(mykey)=30.3

或使用Java代码(在搜索器中):

query.getRanking().getFeatures().put("query(mykey", String.valueOf(30.3));

您可能还想为模型中使用的每个查询功能分配一个默认值。参见https://docs.vespa.ai/documentation/ranking.html#using-query-variables

(如果您的模型是在整个地图上计算得出的,例如,通过将其与文档地图连接在一起,则可以使用映射的张量查询功能代替许多标量查询功能。)

答案 1 :(得分:1)

这里https://docs.vespa.ai/documentation/reference/query-language-reference.html#sameelement上有一些有关如何使用sameElement查询运算符搜索地图字段的示例,但是如果我正确理解您的意思,是否想将地图作为查询运算符传递?如果是这样,那么您是否要使用它进行回忆(哪个文档匹配或仅用作配置排名表达式中排名的输入?)的问题?如果是后者,您可以使用张量,但张量不能用于回忆/搜索。