yql - 批量检查 Vespa 中的文档是否存在

标签 yql vespa

我有一个 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/

相关文章:

json - 现在Yahoo已关闭YQL查询服务替换

c# - 无法查询 Yahoo!梦幻体育API

arrays - Vespa 搜索查询(在数组上)即使在从数组中删除元素后也会给出命中

yql - Vespa yql 中的动态 targetHits

java - Vespa.ai : How to make an array of floats handle null values?

embedding - 仅使用 vespa 作为矢量数据库而不是嵌入器

vespa - 突出显示关键字 vespa 的示例

oauth - 使用 Google/Facebook OpenID 的 Yahoo OAuth 授权问题

r - 集成 Yahoo Sports API 数据

docker - 命令在 docker 容器内工作,但在 docker exec 下失败