以编程方式为 Azure 认知搜索编制非 JSON 文档索引

问题描述 投票:0回答:1

我想以编程方式执行 Azure 索引器的操作,将文档从数据源推送到 Azure 上的索引。最好用 Python 编写。

可以通过 Azure 索引器完成,但我想自己处理这个推送逻辑。

文档有多种格式,最常见的是

docx, pdf, pptx

假设 Azure 索引已存在,并且可以在此自定义索引器的范围内检索文档。

我想做一些类似this的事情,其中包括使用非常自定义的批量大小、频率、多线程策略推送文档。

到目前为止我只知道如何推送 JSON 格式的数据,这可以通过 Python Azure SDK 调用来完成

def add_doc(docs):
    search_client = SearchClient(ENDPOINT, index_name, AzureKeyCredential(KEY))
    result = search_client.upload_documents(documents=docs)
    print("Upload of new document succeeded: {}".format(result[0].succeeded))

其中

docs
定义为字典列表:

doc1 = {
  'field1': xxx,
  'field2': yyy,
  'field3': zzz
}
docs = [doc1, doc2, doc3, ...]

但是,在实际应用中,我希望能够推送上述类型的整个文件,包括但不限于

docx, pdf, pptx

我找不到对非 JSON 文件建立索引的官方支持。

upload_documents()
方法仅适用于字典列表:

upload_documents(documents: List[dict], **kwargs: Any) -> List[IndexingResult]

以下是我想到的一些可能性:

  1. 通过一些 Python 库从内部提取文本,以某种方式将任意文件转换为 JSON。这种方法的稳健性非常不确定。大于普通可传输 JSON 的文件也会导致拼接复杂化。

  2. 希望存在一些用于以二进制格式传输文件的 API 调用。解码可以在自定义索引器端完成,并将自定义技能组应用于此类文件。然后编码回来并推送到 Azure 索引。

python indexing full-text-search azure-cognitive-services
1个回答
0
投票

根据提供的信息,一种可能的解决方案是使用 Azure 文件索引器(预览版)将 docx、pdf 和 pptx 等非 JSON 文件推送到 Azure 索引。该索引器可以从各种文档格式中提取文本,并使其可在 Azure 认知搜索中搜索。

以下是 Azure 文件索引器支持的一些相关文档格式:

  • CSV
  • Microsoft Office 格式:DOCX/DOC/DOCM、XLSX/XLS/XLSM、 PPTX/PPT/PPTM、MSG(Outlook 电子邮件),
  • XML
  • PDF
  • 纯文本文件
  • 邮编

截至目前,该服务已作为公共预览版提供,您可以通过 REST API

python and request package
使用它。

有关设置和配置的详细信息,您可以查看此文档。

© www.soinside.com 2019 - 2024. All rights reserved.