我有一个 docid
列表,想要检查它们是否存在于 Vespa 中。如果是,则返回该 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,然后匹配集合
我认为情况并非如此。如果您经常这样做,您可以创建一个组件,例如搜索器或处理程序,并将 id 列表发布到其中。在组件中,使用 Java Document API获取每个 ID,并为每个匹配创建一个匹配。每个这样的 Get 都将在毫秒范围内,因此会更快 - 您将不得不编写一些代码。
您还可以从独立的 Java 程序运行相同的代码。
关于yql - 批量检查 Vespa 中的文档是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57396403/