You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Solr Cell在单个请求中同时索引PDF文档及关联JSON元数据

如何通过Solr Cell在单个请求中同时索引PDF文档及关联JSON元数据

当然可以实现!Solr Cell(也就是我们常说的ExtractingRequestHandler)完全支持在单个请求里同时上传二进制PDF文件,并且附加自定义的JSON元数据,完美匹配你的需求。

核心实现思路

你只需要发送一个multipart/form-data格式的POST请求,其中包含两部分内容:

  • 二进制的PDF文件
  • 带有literal.前缀的表单参数,用来传递你的JSON元数据(Solr会直接将这些值存入对应字段,不会被文本提取器处理)

具体示例(用curl命令)

假设你的Solr实例运行在localhost:8983,目标集合是your-collection,PDF路径是./sample.pdf,JSON元数据里的author是Jane Smith,source是Company Annual Report,还需要给文档指定一个唯一IDpdf-doc-001,可以用下面的命令:

curl -X POST "http://localhost:8983/solr/your-collection/update/extract?commit=true" \
  -F "file=@./sample.pdf" \
  -F "literal.author=Jane Smith" \
  -F "literal.source=Company Annual Report" \
  -F "literal.id=pdf-doc-001"

针对JSON文件的处理方式

如果你的元数据是保存在一个JSON文件(比如metadata.json)里,内容如下:

{
  "author": "Jane Smith",
  "source": "Company Annual Report"
}

可以用jq工具提取字段值,再传递给Solr,命令如下:

curl -X POST "http://localhost:8983/solr/your-collection/update/extract?commit=true" \
  -F "file=@./sample.pdf" \
  -F "literal.author=$(cat ./metadata.json | jq -r '.author')" \
  -F "literal.source=$(cat ./metadata.json | jq -r '.source')" \
  -F "literal.id=pdf-doc-001"

关键说明

  1. 字段映射:正如你已经在schema中定义的,content字段会自动被Solr Cell填充为从PDF中提取的文本内容;而author、source字段则会被你通过literal.参数传入的值填充。
  2. commit=true参数:这个参数会让Solr立即提交索引,测试时非常方便,生产环境建议批量处理后再手动提交,提升性能。
  3. ID字段:必须指定literal.id给文档一个唯一标识,否则Solr会自动生成随机ID,不利于后续的文档更新或查询。

可视化工具操作(比如Postman)

如果你习惯用可视化工具,步骤也很简单:

  • 选择POST请求,URL填http://localhost:8983/solr/your-collection/update/extract?commit=true
  • 请求体选择form-data
  • 添加一个文件类型的键(比如file),选择你的PDF文件
  • 添加几个文本类型的键:literal.author、literal.source、literal.id,分别填入对应的值
  • 发送请求即可完成索引

备注:内容来源于stack exchange,提问作者lenchester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:49:31