我想以编程方式做Azure索引器所做的事情,将文档从数据源推送到Azure上的索引。理想情况下用Python编写。
这可以通过Azure索引器完成,但我想自己处理这个推送逻辑。
这些文档有各种格式,最常见的是docx, pdf, pptx
。
假设Azure索引已经存在,并且可以在此自定义索引器的范围内检索文档。
我想做一些类似this的事情,包括用非常定制的批量大小、频率和多线程策略推送文档。
到目前为止我只知道如何推送JSON格式的数据,这可以通过PythonAzureSDK调用来完成
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.以某种方式将任意文件转换为JSON,通过一些Python库从其中提取文本。这种方法的鲁棒性是非常不确定的。文件的大小大于正常的可传输JSON也会导致拼接复杂性。
1.希望有一些API调用用于传输二进制格式的文件。解码可以在自定义索引器端完成,并将自定义技能集应用于此类文件。然后编码并推送到Azure索引。
1条答案
按热度按时间uelo1irk1#
根据所提供的信息,一种可能的解决方案是使用Azure Files indexer(预览)将docx、pdf和pptx等非JSON文件推送到Azure索引。此索引器可以从各种文档格式中提取文本,并使其在Azure Cognitive Search中可搜索。
以下是Azure文件索引器支持的一些相关文档格式:
目前,该服务已公开预览,您可以使用
python and request package
通过REST API使用。有关设置和配置的详细信息,您可以查看此documentation.