我正在探索 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'
我刚刚开始学习吊索,非常感谢任何帮助,谢谢。
我在查询中使用了
like
,而不是使用 CONTAINS(*, '%test word%')
。但现在的问题是txt文件中的文本没有被拾取。
这应该是开箱即用的,我们在 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());
}
您可以交叉参考: