2017-03-01 73 views
0

我能夠將元數據與文檔一起存儲在Watson的發現服務中,但現在它不再可用了!發生了什麼?添加文檔時未保存元數據

CreateDocumentRequest.Builder createDocumentBuilder = new CreateDocumentRequest.Builder(environmentId, collectionId); 
    JsonObject metadata = new JsonObject(); 
    metadata.addProperty("filename", fileName); 
    createDocumentBuilder.metadata(metadata); 
    createDocumentBuilder.inputStream(documentStream, applicationString); 
    CreateDocumentResponse createDocumentResponse = discovery.createDocument(createDocumentBuilder.build()).execute(); 

https://gateway.watsonplatform.net/discovery/api/v1/environments/[environmentId]/collections/[collectionId]/query?version=2016-11-07&query=&count=&offset=&aggregation=&filter=&return=

{ 
"matching_results": 1, 
"results": [ 
    { 
     "id": "7c705482-9902-4976-9c77-25fbe92bf7fa", 
     "score": 1 
    } 
] 

}

爲什麼會停止工作?我對這個開始突然發生的底層框架感到有點失望。把它放在一起IBM!

+0

如果去掉&返回=元數據 - 你看到的元數據呢? – catbelly

+0

沒有。我會得到你所期望的一切,只是元數據不再被添加。 – user3689479

+0

還是什麼? IBM,你真的讓我失望了! – user3689479

回答

0

我修復了您的錯誤IBM。

在com.ibm.watson.developer_cloud.discovery.v1.Discovery.createDocument(CreateDocumentRequest createRequest)中,您可以看到正在構建的Multipart請求,而從未添加所需的元數據部分(smh)。

我擴展的發現,並添加

multipartBuilder.addFormDataPart("metadata", createRequest.getMetadata().toString()); 

的請求......

public ServiceCall<CreateDocumentResponse> createDocument(CreateDocumentRequest createRequest) { 
    Validator.notEmpty(createRequest.getEnvironmentId(), "environment_id cannot be empty"); 
    Validator.notEmpty(createRequest.getCollectionId(), "collection_id cannot be empty"); 
    RequestBuilder builder = RequestBuilder.post(String.format("/v1/environments/%s/collections/%s/documents", new Object[] { createRequest.getEnvironmentId(), createRequest.getCollectionId() })); 


    if (createRequest.getConfigurationId() != null) { 
     builder.query(new Object[] { "configuration_id", createRequest.getConfigurationId() }); 
    } 
    Validator.notNull(createRequest.getFile(), "Document file cannot be null"); 
    MediaType mediaType = (MediaType)supportedMediaTypes.get(createRequest.getMediaType()); 
    Validator.notNull(mediaType, String.format("Media Type '%s' not supported", new Object[] { createRequest.getMediaType() })); 
    RequestBody file = InputStreamRequestBody.create(mediaType, createRequest.getFile()); 
    MultipartBody.Builder multipartBuilder = new MultipartBody.Builder(); 
    multipartBuilder.setType(MultipartBody.FORM); 
    multipartBuilder.addFormDataPart("file", "filename", file); 
    multipartBuilder.addFormDataPart("metadata", createRequest.getMetadata().toString()); 
    builder.body(multipartBuilder.build()); 
    Request request = createVersionedRequest(builder); 
    return createServiceCall(request, ResponseConverterUtils.getObject(CreateDocumentResponse.class)); 
}