使用 Apache Solr 索引 pdf 文件内容

2023-12-12

我正在使用 Solrphp 扩展用于与 Apache Solr 交互。我正在从数据库中索引数据。我还想索引外部文件(如 PDF、PPTX)的内容。

索引的逻辑是: 假设schema.xml定义了以下字段:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="created" type="tlong" indexed="true" stored="true" />
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="filepath" type="text_general" indexed="false" stored="true"/>
<field name="filecontent" type="text_general" indexed="false" stored="true"/>

单个数据库条目可能/可能没有存储文件。

因此,以下是我的索引代码:

$post = stdclass object having the database content
$doc = new SolrInputDocument();
$doc->addField('id', $post->id);
$doc->addField('name', $post->name);
....
....
$res = $client->addDocument($doc);
$client->commit();

接下来,我想将 PDF 文件的内容添加到与上面相同的 solr 文档中。

这是curl code:

$ch = curl_init('
http://localhost:8010/solr/update/extract?');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('myfile'=>'@'.$post->filepath));
$result= curl_exec ($ch);

但是,我想我错过了一些东西。我读了文档,但我无法找到一种方法来检索文件的内容,然后将其添加到现有的 solr 文档中field: filecontent

EDIT #1: 如果我尝试设置literal.id=xyz在curl请求中,它创建一个新的solr文档,其中包含id=xyz。我不想创建新的 solr 文档。我希望 pdf 的内容被索引并存储为先前创建的 solr 文档中的字段。

$doc = new SolrInputDocument();//Solr document is created
$doc->addField('id', 98765);//The solr document created above is assigned an id=`98765`
....
....
$ch = curl_init('
http://localhost:8010/solr/update/extract?literal.id=1&literal.name=Name&commit=true');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('myfile'=>'@'.$post->filepath));
$result= curl_exec ($ch);

我想要上面的 solr 文档(id = 98765) 拥有一个字段,在其中对 pdf 的内容进行索引和存储。

但是 cURL 请求(如上所述)创建了另一个新文档(带有id = 1)。我不想要这样。


Solr 和 Apache Tika 负责提取丰富文档的内容并将其添加回 Solr 文档。

文档 :-

您可能会注意到,尽管您可以搜索 示例文档,您可能无法看到该文本 文档被检索。这只是因为“内容”字段 Tika 生成的内容被映射到名为“text”的 Solr 字段,即 已索引但未存储。这是通过默认映射规则完成的 /update/extract 处理程序位于 solrconfig.xml 中,可以轻松更改或 被覆盖。例如,要存储和查看所有元数据和内容, 执行以下命令:

默认 schema.xml :-

<!-- Main body of document extracted by SolrCell.
    NOTE: This field is not indexed by default, since it is also copied to "text"
    using copyField below. This is to save space. Use this field for returning and
    highlighting document content. Use the "text" field to search the content. -->
<field name="content" type="text_general" indexed="false" stored="true" multiValued="true"/>

如果您定义不同的属性来维护文件内容,请使用以下命令覆盖默认值fmap.content=filecontent在 solrconfig.xml 本身中。

fmap.content=attr_content 参数覆盖默认值 fmap.content=text 导致内容添加到 attr_content 场代替。

如果您想在单个文档中对其进行索引,请使用文字前缀,例如literal.id=1&literal.name=Name与属性

$ch = curl_init('
http://localhost:8010/solr/update/extract?literal.id=1&literal.name=Name&commit=true');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('myfile'=>'@'.$post->filepath));
$result= curl_exec ($ch);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache Solr 索引 pdf 文件内容 的相关文章

  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • org.apache.solr.common.SolrException 流主体已禁用

    我已经设置了 apache solr 7 1 并使用 postman 工具来查询它 但是当我尝试使用邮递员删除索引数据时 出现以下错误 Request GET http localhost 8983 solr solr sample3 up
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • 使用 PHP 删除文件 onclick [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在用户单击删除链接时删除文件 但
  • 替换多余的空格

    我需要从应用程序中的玩家用户名中删除多余的空格 字母之间不止一次空格 并将其替换为单个空格 我不介意用户有一个空格 但我需要删除彼此相邻的多个空格 目前我是这样实现的 replace array array fill array array
  • php , simple_html_dom.php, 获取所选选项

    我有一个像这样的 html 块 localurl
  • 创建一个基于简单文本文件的搜索引擎

    我需要尽快创建一个基于简单文本文件的搜索引擎 使用 PHP 基本上它必须读取目录中的文件 删除停止词和无用词 为每个剩余的有用词及其在每个文档中出现的次数建立索引 我猜这个的伪代码是 for each file in directory r
  • 如何从MySQL数据库获取今天/昨天的数据?

    我想从数据库中检索今天的数据 但我不知道该怎么做 我实际上想要获取不是过去 24 小时的数据 我只想获取今天的数据 因此基于实际服务器时间 我还想获取昨天的数据 谁能帮我怎么做 示例代码 SELECT id FROM folk WHERE
  • 无法使用 php 将大文件上传到服务器

    我无法将大文件加载到服务器 问题出在该文件中 FILES filename tmp name 如果文件稍大于 2mb 则为空 我尝试更改 php ini 中的变量 upload max filesize 700M post max size
  • 将 NULL 变量插入数据库

    我将变量设置为 NULL 我试图将其插入数据库 但由于某种原因 它们一直以 0 的形式提交 我确信我试图插入的列允许 NULL 并且默认值设置为 NULL 这是我的代码 insert NULL query mysql query INSER
  • 在 TCPDF 中设置背景颜色

    我已经手动设置了第一页的背景颜色 如下所示 pdf gt AddPage pdf gt SetFillColor 52 21 0 76 pdf gt Rect 0 0 pdf gt getPageWidth pdf gt getPageHe
  • PHP $_FILES 多个文件上传问题

    我在 PHP 中上传多个文件时遇到一个小问题 我有这个 html 表单
  • 如何在 Kohana 中包装 PHP 遗留代码?

    我有大量用 PHP 编写的遗留代码 这些代码不是在任何特定框架上编写的 而是主要是老式风格 即内联 PHP 然而 我的大部分新代码都是在 Kohana 3 1 X 框架上编写的 尽管 Kohana 确实允许遗留代码和 Kohana 文件在同
  • 如何将自托管 WordPress 和已安装的实时站点插件升级到最新可用版本而不遇到任何麻烦?

    我必须升级正在运行的 WordPress 网站的 WordPress CMS 和一些已安装的插件 并且我想要升级的一些插件之前已被修改以实现某些目标 http easycaptures com fs uploaded 288 9522279
  • vagrant box速度慢,如何改进?

    我们已经为我们的开发盒构建了一个 vagrant box 但我们面临着一些延迟问题 Issues Assetic 手表速度很慢 app dev php 中的整体应用程序访问速度很慢 在 vagrant box 的共享文件夹中使用 查找 命令
  • 登录页面上出现错误“警告:尝试访问 bool 类型值的数组偏移量”[重复]

    这个问题在这里已经有答案了 我目前正在为一个学校项目制作一个网站 并且正在制作一个用户注册系统 目前 注册部分与进入 MySQL 数据库的用户数据完美配合 但是 我的登录页面似乎已损坏 每次我尝试登录时都会收到以下错误 警告 尝试访问第 2
  • 如何使用 Mockery 在第 N 次调用模拟方法时抛出异常

    我需要测试我编写的某些代码多次调用另一个类上的方法时的行为 其中一次调用将导致抛出异常 我在用Mockery http docs mockery io模拟可能引发异常的类 因此 就我而言 该方法将被调用三次 我需要它在第二次抛出异常 这是我

随机推荐

  • jQuery、JSON 和 Apache 问题

    我有一个 jQuery JSON 请求 它从另一个服务器 例如 foo com 加载一些 JSON getJSON http foo com json php function data alert data 但我收到的数据为空 这不是跨域
  • 如何将渐变可绘制设置为 FloatingActionButton 上的 backgroundTint 属性

    我想对浮动操作按钮使用渐变颜色而不是传统的纯色 我已经知道如何修改按钮的背景颜色 使用ColorStateList 有没有办法实现以下可绘制对象作为背景色调颜色 覆盖 xml
  • 如何在 Bootstrap 5 中使用单独的 JS 文件?

    我正在使用 Bootstrap 但想减小 Javascript 的大小 我只需要下拉 折叠 有时还需要轮播 所以我只想包含这些 每个脚本都有一个文件夹 dist 我尝试通过 SCRIPT 标签包含它们 它根本不起作用 并在控制台中产生很多错
  • Google 地图自动完成 API 未添加地址选项

    我正在尝试实现这个https developers google com maps documentation javascript examples places autocomplete addressform在使用 ASP NET 构
  • 同时使用 git2 和 hyper:openssl 链接多次

    我正在尝试构建同时使用 hyper 和 git2 的东西 现在我遇到了 openssl 链接两次的问题 提示牧马人带我去货运站features我尝试过 但我仍然卡住了 我遇到的确切错误cargo build如下 error native l
  • 如何在nativescript中访问webpack环境变量?

    我想在 webpack config js 中存储一个环境变量 当我在 Nativescript 中将应用程序与 webpack 捆绑在一起时 我将设置该环境变量 目标是即使在捆绑之后也能保持环境变量的秘密 我怎么做 我相信这应该是可能的
  • 如何用中断串口读取串口?

    我正在尝试在 Linux 中读取 NMEA 消息 但我无法得到完整的消息 54 441 V 0 00 0 00 010720 N 42 GPVTG 0 00 T M 0 00 N 0 00 K N 32 GPGGA 020954 441 0
  • CakePHP 3.x - hasMany 通过关联 - 查找

    假设我的设置与 CookBook 中的设置完全相同 http book cakephp org 3 0 en orm associations html class StudentsTable extends Table public fu
  • JavaScript 中的 HTML 助手?

    在 Razor 中我可以这样做 p person Name p 要渲染这样的东西 p Fred p 我真的必须在 不引人注目的 JavaScript 中执行此操作吗 p data custom person id 1234567890 cs
  • IE8 中的不透明度适用于

    ,但不适用于

    我的 IE8 有问题 无法执行 a 元素透明 我发现了这些相关的问题 但我对那里提供的答案没有任何运气 不透明度 CSS 在 IE8 中不起作用 网页不透明 我试过了 给予布局 通过使用zoom 1 但这并没有帮助 这是我的测试 CSS 摘
  • Matplotlib 在图像上制作动画

    我正在尝试为图像上的一堆不断更新的点设置动画 想象一下使绘制的点在某些图像上对角移动 我在这里查看了动画示例 http matplotlib org examples animation dynamic image html 但我不确定如何
  • 在 cxf Servlet 上找不到资源类

    我创建了一个非常简单的 cxf 非基于 spring 的 Servlet 它加载一个javax ws rs Application type 这是 web xml
  • 将 COM 对象动态转换为 COM 接口不会增加引用计数,不是吗?

    如果我有一个 C 类 X 它实现了 COM 接口 IY 和 IZ 并且我有一个指向 X 类型对象的 IY 接口的指针 y 我会这样做 IZ z dynamic cast
  • Sqlite3 / python - 从sqlite导出到csv文本文件不超过20k

    我正在尝试将 sqlite 表导出到文本文件 我在这个站点上找到了一些很大的帮助 它对于较小的输出非常有效 但一旦我达到 20k 左右 它似乎就会限制输出 第一次尝试是 Mark Bell 的 Unicode Writer 位于是否可以将表
  • Visual Studio 中的“优化代码”选项到底有什么作用?

    选项的名称说明了一些事情 但是 Visual Studio 编译器到底做了什么以及真正的后果是什么 编辑 如果你搜索谷歌你可以找到这个地址 但这并不是我真正想要的 我想知道真实发生的事情 例如为什么循环的时间更少等等 如果没有优化 编译器会
  • mongodb:如何通过索引号更新数组元素

    假设您有这样的文档 id sdsdfsd a x 0 y 0 z 0 x 0 y 0 z 0 x 0 y 0 z 0 x 0 y 0 z 0 所以 如果你有 id和一个索引号 比如 2 现在 对于该索引我想更改x值为 1 这在 mongo
  • 与 @Autowired 的绑定在以“new”启动的实例内不起作用

    在我的 web spring 应用程序中 我创建一个带有关键字的实例new如下 在我的动作类之一中 存在以下方法 public void process MyBean b new MyBean initiated the instance
  • 如何使用 Glide 库对图像进行圆角处理?

    那么 有人知道如何用 Glide 显示圆角图像吗 我正在使用 Glide 加载图像 但我不知道如何将舍入参数传递给该库 我需要显示图像 如下例所示 滑翔V4 Glide with context load url circleCrop in
  • Python字典创建错误

    我正在尝试从存储的列表创建 Python 字典 第一种方法有效 gt gt gt myList gt gt gt myList append Prop1 gt gt gt myList append Prop2 gt gt gt myDic
  • 使用 Apache Solr 索引 pdf 文件内容

    我正在使用 Solrphp 扩展用于与 Apache Solr 交互 我正在从数据库中索引数据 我还想索引外部文件 如 PDF PPTX 的内容 索引的逻辑是 假设schema xml定义了以下字段