如何使用 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 文档的文本。然后我就照常运行查询。