使用 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 文件内容 的相关文章

  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 运行 Composer 返回:“无法打开输入文件:composer.phar”

    我是 symfony2 和阅读新手symblog http tutorial symblog co uk tutorial parts 在第三章中 在尝试使用数据装置时 我尝试了以下命令 php composer phar update 但
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • TOMCAT 6 中的 PHP - 异常

    我一直在努力融入PHP in APACHE TOMCAT 6依照指示second answer为了QUESTION https stackoverflow com questions 779246 run a php app using t
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 在 Woocommerce 购物车中设置最小小计金额

    我正在尝试将最低订单金额设置为 25 美元 到目前为止 我找到了这段代码 如果未达到最低限度 它似乎可以阻止结账 但它使用的小计包含税费 我需要在总计中排除税费 add action woocommerce checkout process
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将

随机推荐

  • 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定义了以下字段