繁体   English   中英

如何在GAE Search API中动态创建文档?

[英]How to dynamically create a document in the GAE Search API?

我试图了解如何在文档中动态添加字段。

我正在关注文档 但是,我想在“ for”语句中使用addField方法,从而以编程方式生成字段。

我已经试过了:

 Builder document = Document.newBuilder(); document.setId(id); // for statement start com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value); document.addField(field); // for statement end document.build(); 

但这似乎不起作用。 当我尝试时,我将其打印出来

com.google.appengine.api.search.Document$Builder@2604ed54

而当我使用原始代码时:

 String myDocId = "PA6-5000"; Document doc = Document.newBuilder() // Setting the document identifer is optional. // If omitted, the search service will create an identifier. .setId(myDocId) .addField(Field.newBuilder().setName("content").setText("the rain in spain")) .addField(Field.newBuilder().setName("email").setText(userEmail)) .addField(Field.newBuilder().setName("domain").setAtom(userDomain)) .addField(Field.newBuilder().setName("published").setDate(new Date())) .build(); 

通过上面的代码,我得到了预期的结果。

我如何能操纵此以便将addfield()放入for语句中?

感谢您的帮助。

该文档暗示Document.Builder是可变的,但是通常您应该在每次调用后重新分配该构建器,以防万一。

Builder document = Document.newBuilder();
document.setId(id);
com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value);
document = document.addField(field);
document.build();

在您的情况下,您看到的是构建器上的toString()方法,而不是文档本身。 问题是最后一行。

尝试这个:

Builder builder = Document.newBuilder();
builder.setId(id);
com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value);
builder = builder.addField(field);
Document document = builder.build();

然后,您可以放入for循环并离开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM