使用 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' 解决方案。

如果这是一个周期性任务,

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

现在搜索会很快。