3

目前我正在使用 REST 接口来查询 vespa,这似乎工作得很好,但有些东西告诉我应该在应用程序中使用搜索器来使客户端(服务器端代码)更轻一些(将 jar 文件捆绑在应用程序包中) 使它更平滑一点。我设法做了一些简单的搜索器/处理器应用程序。但这有点压倒性的。

那么有没有现成的例子?

基本上我想:

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

也很好奇,除了我目前正在做的使用 http 请求构建字符串的麻烦之外,使用搜索器或使用 java 路由与休息是否有任何性能提升?

感谢我可以开始的任何见解或代码帮助。

4

1 回答 1

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 解析的成本,如果您的客户端是远程网络高的,这可能很重要潜伏。

于 2019-06-16T18:47:36.177 回答