【问题标题】:Batch check document existence in Vespa批量检查 Vespa 中的文档是否存在
【发布时间】:2019-08-07 14:10:54
【问题描述】:

我有一个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",
    }

谢谢!

【问题讨论】:

    标签: yql vespa


    【解决方案1】:

    如果您的列表相对于语料库很大,您可以使用 vespa-visit 快速转储 所有 id,然后匹配集合

    我认为情况并非如此。如果您经常这样做,您可以创建一个像 Searcher 或 Handler 这样的组件,您可以将 id 列表发布到。在 Component 中,使用Java Document API 获取每个 ID,并为每个匹配项创建一个 Hit。每个这样的 Get 都在 ms 范围内,因此会更快 - 您将不得不编写一些代码进行权衡。

    您还可以从独立的 Java 程序运行相同的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      相关资源
      最近更新 更多