2

我现在big database大约有 50 万(500K)个条目,现在所有这些条目也有一些与之关联的文档(即每个 id 至少有 pdf 文件)。现在我需要一种强大的方法来搜索text这些 pdf 文件中的特定内容,如果找到它,它应该返回相应的“id”

请分享一些快速优化的方法search text in a pdf using PHP。任何想法将不胜感激。

注意:将pdf更改为文本然后搜索显然不是我想要的,这将需要更长的时间。

在一行中,我需要使用 PHP 在 pdf 中搜索文本的最佳方法

4

2 回答 2

2

如果这是一项一次性任务,则可能没有“快速”解决方案。

如果这是一个经常性的任务,

  1. 通过一些工具提取文本。(对不起,我不知道工具。)
  2. 将该文本存储在数据库表中。
  3. FULLTEXT索引应用于该表。

现在搜索会很快。

于 2021-11-13T16:41:41.333 回答
1

我自己在 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 项目中。可能还有其他一些图书馆。可能很难看,但为我完成了这项工作。

于 2021-11-13T12:55:38.630 回答