使用 php 在 pdf 中搜索文本
Searching text in pdf using php
我有一个 big database
大约有 50 万 (500K) 个条目,现在所有这些条目也有一些与之关联的文档(即每个 ID 至少有 pdf 文件)。现在我需要一个强大的方法来在这些 pdf 文件中搜索特定的 text
,如果我找到它,它应该 return 相应的 'id'
请分享一些快速优化的方法给search text in a pdf using PHP
。任何想法将不胜感激。
注意:把pdf转成文本再搜索显然不是我要找的,时间会比较长。
In one line I need the best way to search for text in pdf using PHP
我自己用 ReactJS 编写了一个网站来搜索 PDF 文件(索引书籍)中的信息,我使用 Apache SOLR 搜索引擎对其进行了索引。
我在 React 中所做的本质上是:
queryValue = "(" + queryValueTerms.join(" OR ") + ")"
let query = "http://localhost:8983/solr/richText/select?q="
let queryElements = []
if(searchValue){
queryElements.push("text:" + queryValue)
}
...
fetch(query)
.then(res => res.json())
.then((result) =>{
setSearchResults(prepareResults(result.response.docs, result.highlighting))
setTotal(result.response.numFound)
setHasContent(result.response.numFound > 0)
})
这会导致 HTTP 调用:
http://localhost:8983/solr/richText/select?q=text:(chocolate%20OR%20cake)
由于这是 ReactJS 并且只是部分代码,因此就 PHP 而言,它对您的价值不大,但我只是想演示一下该方法是什么。我想您会使用 Curl 或其他工具。
索引本身我在一个单独的服务中使用 SolrJ,即我写了一个相当小的 Java 程序,它利用 SOLR 自己的 SolrJ 库将 PDF 文件添加到 SOLR 索引。
如果您选择使用 Java 和 SolrJ 建立索引(对我来说是最简单的选择,而我之前几年没有这样做 Java),这里有一些有用的资源和示例,我出于自己的目的在广泛搜索后收集了这些内容:
https://solr.apache.org/guide/8_5/using-solrj.html#using-solrj
我基本上复制了这里的内容:
https://lucidworks.com/post/indexing-with-solrj/
并根据我的需要对其进行了调整。
提示:因为我对 Java 很生疏,而不是设置类路径等,我的快速解决方案是将所有库从 SOLR 的 solrj 文件夹复制到我的 Java 项目。可能还有其他一些图书馆。可能很丑,但对我来说很重要。
如果这是一次性任务,可能没有 'fast' 解决方案。
如果这是一个周期性任务,
- 通过一些工具提取文本。 (抱歉,我不知道有什么工具。)
- 将该文本存储在数据库中 table。
- 将
FULLTEXT
索引应用于 table。
现在搜索会很快。
我有一个 big database
大约有 50 万 (500K) 个条目,现在所有这些条目也有一些与之关联的文档(即每个 ID 至少有 pdf 文件)。现在我需要一个强大的方法来在这些 pdf 文件中搜索特定的 text
,如果我找到它,它应该 return 相应的 'id'
请分享一些快速优化的方法给search text in a pdf using PHP
。任何想法将不胜感激。
注意:把pdf转成文本再搜索显然不是我要找的,时间会比较长。
In one line I need the best way to search for text in pdf using PHP
我自己用 ReactJS 编写了一个网站来搜索 PDF 文件(索引书籍)中的信息,我使用 Apache SOLR 搜索引擎对其进行了索引。
我在 React 中所做的本质上是:
queryValue = "(" + queryValueTerms.join(" OR ") + ")"
let query = "http://localhost:8983/solr/richText/select?q="
let queryElements = []
if(searchValue){
queryElements.push("text:" + queryValue)
}
...
fetch(query)
.then(res => res.json())
.then((result) =>{
setSearchResults(prepareResults(result.response.docs, result.highlighting))
setTotal(result.response.numFound)
setHasContent(result.response.numFound > 0)
})
这会导致 HTTP 调用:
http://localhost:8983/solr/richText/select?q=text:(chocolate%20OR%20cake)
由于这是 ReactJS 并且只是部分代码,因此就 PHP 而言,它对您的价值不大,但我只是想演示一下该方法是什么。我想您会使用 Curl 或其他工具。
索引本身我在一个单独的服务中使用 SolrJ,即我写了一个相当小的 Java 程序,它利用 SOLR 自己的 SolrJ 库将 PDF 文件添加到 SOLR 索引。
如果您选择使用 Java 和 SolrJ 建立索引(对我来说是最简单的选择,而我之前几年没有这样做 Java),这里有一些有用的资源和示例,我出于自己的目的在广泛搜索后收集了这些内容:
https://solr.apache.org/guide/8_5/using-solrj.html#using-solrj
我基本上复制了这里的内容: https://lucidworks.com/post/indexing-with-solrj/ 并根据我的需要对其进行了调整。
提示:因为我对 Java 很生疏,而不是设置类路径等,我的快速解决方案是将所有库从 SOLR 的 solrj 文件夹复制到我的 Java 项目。可能还有其他一些图书馆。可能很丑,但对我来说很重要。
如果这是一次性任务,可能没有 'fast' 解决方案。
如果这是一个周期性任务,
- 通过一些工具提取文本。 (抱歉,我不知道有什么工具。)
- 将该文本存储在数据库中 table。
- 将
FULLTEXT
索引应用于 table。
现在搜索会很快。