在 Vespa 中使用 Document API 动态添加文档
Dynamically adding document using Document API in Vespa
我在我的应用程序中创建了一个包含多个文档的搜索器 class。在 Searcher class 中,我想将文档写入特定类型的文档。但它并没有反映在 Vespa 上。我的代码如下:
public Result search(Query query, Execution execution) {
Result result = execution.search(query);
DocumentAccess access = DocumentAccess.createDefault();
DocumentType type = access.getDocumentTypeManager().getDocumentType("location");
DocumentId id = new DocumentId("id:location:location::4");
Document document = new Document(type, id);
document.setFieldValue("token", "qwerty");
document.setFieldValue("latlong", "12.343,12.4343");
document.setFieldValue("data_timestamp", "00:00:00 00:00:00");
// return the result up the chain
return result;
}
这里我正在将文档写入位置类型。我的 Location.sd class:
search location
{
document location {
field token type string {
indexing: index
}
field latlong type string {
indexing: attribute
}
field data_timestamp type string {
indexing: attribute
}
}
fieldset default {
fields: token
}
}
当我想获取文档时使用:
http://localhost:8080/document/v1/location/location/docid/4
I got the result:
{
"id": "id:location:location::4",
"pathId": "/document/v1/location/location/docid/4"
}
我应该得到以下输出:
{
"fields": {
"token": "qwerty",
"latlong": "12.343,12.4343",
"data_timestamp": "00:00:00 00:00:00"
},
"id": "id:location:location::4",
"pathId": "/document/v1/location/location/docid/4"
}
请帮我找出我做错了什么或遗漏了什么。
如果您想从搜索器中添加文档,您应该将 DocumentAccess 实例的创建移到搜索器的构造函数中,以避免在每个搜索请求的基础上创建一个新实例。
创建一个 Document 实例不会将数据保存在 Vespa 中,然后您需要通过从 DocumentAccess 实例创建一个 Session 来发送它。请在此处查看完整示例 https://docs.vespa.ai/documentation/document-api-guide.html
我在我的应用程序中创建了一个包含多个文档的搜索器 class。在 Searcher class 中,我想将文档写入特定类型的文档。但它并没有反映在 Vespa 上。我的代码如下:
public Result search(Query query, Execution execution) {
Result result = execution.search(query);
DocumentAccess access = DocumentAccess.createDefault();
DocumentType type = access.getDocumentTypeManager().getDocumentType("location");
DocumentId id = new DocumentId("id:location:location::4");
Document document = new Document(type, id);
document.setFieldValue("token", "qwerty");
document.setFieldValue("latlong", "12.343,12.4343");
document.setFieldValue("data_timestamp", "00:00:00 00:00:00");
// return the result up the chain
return result;
}
这里我正在将文档写入位置类型。我的 Location.sd class:
search location
{
document location {
field token type string {
indexing: index
}
field latlong type string {
indexing: attribute
}
field data_timestamp type string {
indexing: attribute
}
}
fieldset default {
fields: token
}
}
当我想获取文档时使用: http://localhost:8080/document/v1/location/location/docid/4
I got the result:
{
"id": "id:location:location::4",
"pathId": "/document/v1/location/location/docid/4"
}
我应该得到以下输出:
{
"fields": {
"token": "qwerty",
"latlong": "12.343,12.4343",
"data_timestamp": "00:00:00 00:00:00"
},
"id": "id:location:location::4",
"pathId": "/document/v1/location/location/docid/4"
}
请帮我找出我做错了什么或遗漏了什么。
如果您想从搜索器中添加文档,您应该将 DocumentAccess 实例的创建移到搜索器的构造函数中,以避免在每个搜索请求的基础上创建一个新实例。
创建一个 Document 实例不会将数据保存在 Vespa 中,然后您需要通过从 DocumentAccess 实例创建一个 Session 来发送它。请在此处查看完整示例 https://docs.vespa.ai/documentation/document-api-guide.html