使用com.day.cq.wcm.foundation.Search api搜索AEM内容

问题描述:

我正在使用AEM 6.3使用Touch UI & Sighty开发网站。使用com.day.cq.wcm.foundation.Search api搜索AEM内容

我想要实现我们的项目基于标签搜索功能,这可以使用标签,我们也希望有您的意思功能贯穿整个网站进行搜索。

对于这一点,我用com.day.cq.wcm.foundation.Search API怎么一回事,因为它可以帮助我得到的结果列表以及在您的意思是否导致套其中满足我的所有要求。

我没有使用查询生成器API,因为它只为我们提供了刚性的结果集,并且不履行您的意思功能。

只要我们开始从匿名用户点击网站URL(即不登录AEM),就会出现问题。 但是,只要我们给匿名用户的etc/tags权限,它就会开始正常工作。

但我不想授予匿名用户权限。

这将是什么适当的解决方案?

这个问题还有其他更好的方法吗?

为了使此功能正常工作,匿名用户需要etc/tags权限。这是因为查询会查看标签以计算出同义词或“您的意思是”逻辑。

但我不希望给允许匿名用户

你可能在这里担心安全问题。你可以解决这个问题:

  • 给只读权限,匿名用户
  • 座在/ etc /您的调度员(或等同层),因此它不能从匿名用户进行访问的标签。

匿名用户权限仅用于使查询正确执行过滤。这并不意味着你需要通过你的网站暴露/ etc/tags。

+0

非常感谢您的解决方案。但是除了com.day.cq.wcm.foundation.Search api之外,还有其他的API可以用于'你的意思'吗? –

+1

搜索API是一种专门的查询引擎,因此您可以根据自己的意愿编写自己的代码,但通常情况下,这只需要使用内容标签对索引进行定义。我会建议开一个新的问题,以便更广泛的社区能够回答。 –

既然您是使用过滤器标签进行搜索,那么您可以使用TagManager Api来获取所有使用特定标签标记的资源。 例如:RangeIterator find(String basePath, String [] tagIDs)。

basePath - The starting node of the search 
tagIDs - a list of tag IDs or full paths to tags 

你可以在这里找到很多更多的细节。 https://docs.adobe.com/docs/en/cq/5-6-1/javadoc/com/day/cq/tagging/TagManager.html