我有一个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",
}
谢谢!
答案 0 :(得分:2)
如果您的列表相对于语料库而言较大,则可以使用vespa-visit快速转储所有 id,然后匹配集合
我认为情况并非如此。如果您经常这样做,则可以创建将ID列表发布到的诸如Searcher或Handler之类的组件。在组件中,使用Java Document API获取每个ID,然后为每个匹配项创建一个Hit。每个这样的Get都会在ms范围内,因此会更快-您必须编写一些代码进行权衡。
您还可以从独立的Java程序中运行相同的代码。