我没有看到使用可用 api 文档的解决方案。
它在 Web 控制台上也不可用。
是否可以使用Watson Discovery Service获取文件 url?
我没有看到使用可用 api 文档的解决方案。
它在 Web 控制台上也不可用。
是否可以使用Watson Discovery Service获取文件 url?
如果您需要存储原始源/文件 URL,可以将其作为字段包含在 Discovery 服务的文档中,然后您可以在需要时查询该字段。
我也为这个请求苦苦挣扎,但最终使用 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。
您现在可以使用 Discovery 查询之类的方式查询集合并提取元数据:
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 的完整响应......但是......还有很多事情要做仅识别您自己的自定义元数据。