我们如何使用Watson Discovery Service获取文档文件URL?

时间:2017-01-28 12:48:32

标签: ibm-watson watson-discovery

我没有使用可用的api文档查看解决方案。

它也无法在网络控制台上使用。

是否可以使用 Watson Discovery服务获取文件网址

2 个答案:

答案 0 :(得分:3)

如果您需要存储原始源/文件URL,可以将其作为文档中的字段包含在Discovery服务中,然后您可以在需要时将该字段退出。

答案 1 :(得分:1)

我也为这个请求而苦苦挣扎,但最终使用Python绑定到Watson Discovery使其工作。在线文档和API参考非常差;这是我用来使其工作的方式:

(假设您拥有Watson Discovery服务并创建了一个集合):

# Programmatic upload and retrieval of documents and metadata with Watson Discovery

from watson_developer_cloud import DiscoveryV1
import os
import json

discovery = DiscoveryV1(
    version='2017-11-07',
    iam_apikey='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    url='https://gateway-syd.watsonplatform.net/discovery/api'
)

environments = discovery.list_environments().get_result()
print(json.dumps(environments, indent=2))

这为您提供了环境ID。现在添加到您的代码中:

collections = discovery.list_collections('{environment-id}').get_result()
print(json.dumps(collections, indent=2))

这将向您显示用于以编程方式将文档上载到的集合ID。您应该有一个要上载的文档(在我的情况下是MS Word文档),以及来自您自己的源文档系统的随附URL。我将使用一个虚构的例子。

注意:文档不会告诉您将'rb'追加到open语句的末尾,但是在上载Word文档时需要这样做,如下面的示例所示。原始文本/ HTML文档可以不带'rb'参数上传。

url = {"source_url":"http://mysite/dis030.docx"}
with open(os.path.join(os.getcwd(), '{path to your document folder with trailing / }', 'dis030.docx'), 'rb') as fileinfo:
    add_doc = discovery.add_document('{environment-id}', '{collections-id}', metadata=json.dumps(url), file=fileinfo).get_result()
    print(json.dumps(add_doc, indent=2))
    print(add_doc["document_id"])

请注意将元数据设置为JSON字典,然后在参数内使用json.dumps对其进行编码。到目前为止,我只想存储原始源URL,但是您可以根据自己的用例要求使用其他参数扩展它。

此对Discovery的调用将为您提供文档ID。

您现在可以使用发现查询等查询集合并提取元数据:

my_query = discovery.query('{environment-id}', '{collection-id}', natural_language_query="chlorine safety")
print(json.dumps(my_query.result["results"][0]["metadata"], indent=2))

注意-我只是从总体返回结果中提取此处存储的元数据-如果您只是拥有以下内容: print(my_query)会从Discovery那里得到完整的响应...但是...要识别您自己的自定义元数据还有很多工作要做。