0

如何使用 FOS Elastica Bundle 从索引的 pdf 文件内容中获取纯文本搜索结果?

我正在使用
ElasticSearch 和 Attachment-Mapper 插件
Elastica
FOS Elastica Bundle,以及 Symfony2 上的 Doctrine

到目前为止,我已经能够启动并运行映射器附件。pdf 文件内容使用https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/96作为指南进行索引。
方法摘要,因此您不必阅读整个 github 帖子:

1) 使用“getEncodedFile”方法创建一个“文档”实体。注意:我只在这个方法中抓取文件内容。我不认为需要在此处对数据进行 base64 编码,因为稍后会发生这种情况(我很确定 Elastica Document 类会这样做)。

2)然后我设置了config.yml:

      types: 
          document:  
                mappings:  
                    id: ~  
                    encodedFile:  
                        type: attachment
                persistence:
                    driver: orm 
                    model: MyBundle\Entity\Document
                    provider: ~
                    finder: ~
                    listener: ~  

搜索函数返回正确的实体。当我 var_dump 混合结果时,我得到了正确的实体,包括所有字段。如果我添加“setHighlight”方法,没有任何变化。setHighlight 方法不返回关于“encodedFile”字段的任何内容。我确实得到了 setHighlight 来处理其他领域。

如何从索引的 base64 编码数据中提取纯文本搜索结果(带有一些上下文)?

根据这个堆栈帖子,数千个文档(pdf 和/或 xml)的可搜索存档的最佳实践,这似乎是可能的。

提前致谢

更新

所以我屈服了。我最终使用 XPDF 来提取和索引每个 pdf 文档的文本。然后我就照常运行查询。

4

0 回答 0