在vespa中使用Wandsearcher的任何示例吗? (在加权集查询之后)

时间:2019-06-16 01:48:33

标签: vespa

当前,我正在使用REST接口查询vespa,这似乎很好用,但是有些事情告诉我,我应该在应用程序中使用搜索器使客户端(服务器端代码)更轻巧(将jar文件打包在应用程序包)以使其更加流畅。我设法做了一些简单的搜索器/处理器应用程序。但这有点令人难以置信。

那么有没有现成的例子?

我基本上想:

  1. 发送到/search?query=someId
  2. 对此documentID上的加权集进行普通搜索(我想这很方便:https://docs.vespa.ai/documentation/reference/inspecting-structured-data.html
  3. 在响应中获取这些项目并将其添加到魔杖项目中,并使用wandsearcher在给定字段上查询魔杖。与yql相似: "select * from sources * where wand(interest, some weightedsets));","ranking":"combined_score"并返回匹配项。

也很好奇,除了我目前正在使用http请求进行字符串构建的麻烦之外,使用搜索器还是走Java路线还是休息可以提高性能?

感谢我能提供的任何见解或代码帮助。

1 个答案:

答案 0 :(得分:2)

这里有一个使用WandItem(YQL wand)的示例,这里https://docs.vespa.ai/documentation/advanced-ranking.html并请参见https://docs.vespa.ai/documentation/using-wand-with-vespa.html,因为在Vespa中有两个可用的wand实现,从描述中听起来wand()是您要在此用例中使用什么。对于第一次调用,您可能希望有一个专用的文档摘要,以减少为第一个查询获取的数据量,并可以选择仅在内存不足的情况下提供数据(请参见https://docs.vespa.ai/documentation/document-summaries.html

另请参阅https://docs.vespa.ai/documentation/searcher-development.html作为编写搜索者的一般资源。

对于您的用例,编写一个搜索器来执行这两个查询非常有意义,因为您的第二个查询取决于第一个查询,并且避免了渲染/ http / yql解析的开销,如果客户端是远程的,这可能很重要网络延迟高。