我没有使用可用的api文档查看解决方案。
它也无法在网络控制台上使用。
是否可以使用 Watson Discovery服务获取文件网址?
答案 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那里得到完整的响应...但是...要识别您自己的自定义元数据还有很多工作要做。