我们如何使用 Watson Discovery 服务获取文档文件 url?

How do we get the document file url using the Watson Discovery Service?

我没有使用可用的 api 文档找到解决此问题的方法。

它在 Web 控制台上也不可用。

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

如果您需要存储原始 source/file 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' 附加到打开语句的末尾,但在上传 Word 文档时是必需的,如下面的示例所示。可以在没有 'rb' 参数的情况下上传原始文本/HTML 文档。

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 的完整响应......但是......要确定你自己的自定义元数据还有很多事情要做。