0

我正在尝试在我的 Android 应用程序上使用 Google Search API,并且已在索引中添加了文档。

现在我正在通过 ID 检索文档,我只想更新一些字段,而不是全部。

我试图做但没有成功:

 // Fetch a single document by its  doc_id
            Document doc = index.get(myDocID);
            LOG.warning("FOUND DOC " + doc.toString());

            doc.newBuilder()

                    .addField(Field.newBuilder()
                            .setName("field1")
                            .setNumber(valueForField1))
                    .addField(Field.newBuilder()
                            .setName("field2")
                            .setNumber(valueForField2))
                    .addField(Field.newBuilder()
                            .setName("field3")
                            .setDate(valueForField3))
                    .build();

            LOG.warning("NEW DOC " + doc.toString());
            try {
                index.put(doc);
                LOG.warning("PUT OK");
            } catch (PutException e) {
                if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) {
                    // retry putting the document
                }
                LOG.warning("ERROR");
            }

在上面的代码中,我试图只更新文档的 3 个字段。

我在文档中找到的唯一信息是,如果我想重新索引一个文档,我必须保存一个具有相同 ID 的新文档,它将被重新索引。

我必须填写所有字段还是有办法只更新某些字段?

我很感激任何答案

4

1 回答 1

1

您需要将现有文档的所有属性(字段、构面、doc_id 等)复制到新构建器。Document.newBuilder 是静态的,不使用任何现有文档的数据。

于 2016-04-27T21:09:49.887 回答