yql - 批量检查 Vespa 中的文档是否存在
问题描述
我有一个列表docid
并想检查它们是否存在于 Vespa 中。如果是,则返回 that 的特定字段docid
。目前,我正在按顺序执行此操作。Python中的示例代码:
import requests
doc_urlbase = 'http://localhost:8080/document/v1/test/test'
docid_list = [1,2,3,4,5]
for docid in docid_list:
doc_url = '{}/{}'.format(doc_urlbase, i)
req = requests.get(doc_url)
if req.status_code == 200:
# docid is in Vespa, save the field value
else:
# display not found
我希望有更好的方法来做到这一点,并返回一个数组/映射作为结果。就像是:
Query given:
docid_list = [1,2,3,4,5]
Return:
{
1: "field value",
2: "field value",
3: "", # not in Vespa
4: "field value",
5: "field value",
}
谢谢!
解决方案
如果您的列表相对于语料库很大,您可以使用 vespa-visit 快速转储所有id,然后匹配集合
我认为情况并非如此。如果您经常这样做,您可以创建一个像 Searcher 或 Handler 这样的组件,您可以将 id 列表发布到该组件。在 Component 中,使用Java Document API获取每个 ID,并为每个匹配项创建一个 Hit。每个这样的 Get 都将在 ms 范围内,因此会更快 - 您将不得不编写一些代码进行权衡。
您还可以从独立的 Java 程序运行相同的代码。
推荐阅读
- c# - 检查 db 中的值列表并检索属于日期时间月份属性的项目
- ios - 如何将 FirebaseUI 与多个数据源一起用于 tableview?
- vue.js - 无法显示来自请求 Vuejs 的值
- java - TornadoFX/JavaFX - 根据另一个可观察属性过滤可观察列表
- flutter - 接收未指定数据类型的值,然后找出数据类型
- python - CNN的加载精度和损失时期
- python - 国际象棋机器人因黑棋走错
- unit-testing - MvvmCross 中的导航单元测试
- java - 无法在 docker 容器上使用 MySQL 连接 dropwizard
- wordpress - 如何在产品页面上展示?