如何使上传的 PDF 文本可在 Apache Sling 中搜索

问题描述 投票:0回答:2

我正在探索 Apache Sling 11 来构建一个更多内容驱动的 Web 应用程序。我有一个页面,可以将文件(pdf/txt/doc)上传到路径

/content/company/uploads
作为
nt-file
。在搜索模块中,我使用 JCR 查询来搜索特定文本,我希望 PDF/TXT 文件中的文本可搜索,现在搜索能够拾取 txt 文件中的文本,但不能拾取 pdf 文件中的文本。我用于测试的 pdf 文件充满了文本。

我已经在 Oak:index/lucene 中配置了 tika 并运行了重新索引,但查询结果没有变化。

Apache Sling 版本 - 11 后端 - Mongo DB(oak-mongo)

使用的查询

SELECT * FROM [nt:base] WHERE ISDESCENDANTNODE('/content/company/uploads') AND lower([*]) LIKE 'test word'

下面是Tika配置截图 Tika configuration screenshot below

我刚刚开始学习吊索,非常感谢任何帮助,谢谢。

aem apache-tika sling jackrabbit-oak
2个回答
0
投票

我在查询中使用了

like
,而不是使用
CONTAINS(*, '%test word%')
。但现在的问题是txt文件中的文本没有被拾取。


0
投票

这应该是开箱即用的,我们在 Sling 中对其进行了集成测试。

我们在测试 Servlet 中使用的服务器端代码是

Query query = session.getWorkspace().getQueryManager().createQuery("SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.*, $queryText)", Query.JCR_SQL2);
query.bindValue("queryText", session.getValueFactory().createValue(queryText));
QueryResult result  = query.execute();
NodeIterator iterator = result.getNodes();
while( iterator.hasNext() ) {
    response.getWriter().println(iterator.nextNode().getPath());
}

您可以交叉参考:

© www.soinside.com 2019 - 2024. All rights reserved.