尝试调试查询http://localhost:4502/libs/cq/search/content/querydebug.html时,它返回与查询不匹配的结果。例如,如果想要在所有节点中搜索'foo Bar',我需要接收包含'Foo bar‘、'foo BAR’的所有节点,但不只是'foo‘和' bar’,而不是'foo-bar‘。服务中的查询是使用QueryBuilder完成的。
发布于 2016-08-24 00:37:03
当您尝试执行类似于SQL的查询时,QueryBuilder非常有用。正如您所经历的那样,查询调试界面的全文搜索功能非常有限。
但是,请记住,AEM使用底层Lucene和/或Solr索引,并且它确实提供了一种执行原生solr / lucene查询的方法。
select [jcr:path] from [nt:base] where native('solr', '<filter>?<solr_query_goes_here>'。很明显,您需要熟悉solr查询。感谢下面的幻灯片分享(幻灯片50讨论了AEM中的本机查询) http://www.slideshare.net/justinedelson/demystifying-oak-searchAEM对原生solr查询的支持还不够完善。您可能需要手动编辑SOLR模式xml文件(在crx-quickstart文件夹下创建),以添加其他过滤器、自定义字段等。我们已经成功地调整了AEM中的solr,以便使用上述方法执行空间搜索。
发布于 2016-03-07 21:31:37
如果您需要"foo bar"的各种组合,那么您必须查询:
fulltext=foo bar
你只能得到前10个结果。要获得所有功能,您需要:
p.limit=-1
您可能需要指定路径:
path=/content/website/
请访问Adobe Query Builder API了解更多信息。
发布于 2016-05-17 14:38:05
在幕后,AEM创建一个xpath查询,然后执行它。然后,对于查询中没有映射到xpath的任何部分,它都会遍历结果并对其进行过滤。
您还应该考虑是否存在要匹配的属性,而不是任何文本。这会给你带来更好的结果,因为你想要准确。现在您撒的网太广了,我认为您应该考虑限制if,除了性能原因。这只是个建议。
你说结果与你的查询不匹配,你能告诉我们结果是什么吗?你能把你真正的问题写在这里吗?这将使帮助变得更容易。
https://stackoverflow.com/questions/35826997
复制相似问题