当前,我正在使用REST接口查询vespa,这似乎很好用,但是有些事情告诉我,我应该在应用程序中使用搜索器使客户端(服务器端代码)更轻巧(将jar文件打包在应用程序包)以使其更加流畅。我设法做了一些简单的搜索器/处理器应用程序。但这有点令人难以置信。
那么有没有现成的例子?
我基本上想:
/search?query=someId
"select * from sources * where wand(interest, some weightedsets));","ranking":"combined_score"
并返回匹配项。也很好奇,除了我目前正在使用http请求进行字符串构建的麻烦之外,使用搜索器还是走Java路线还是休息可以提高性能?
感谢我能提供的任何见解或代码帮助。
答案 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解析的开销,如果客户端是远程的,这可能很重要网络延迟高。