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

AEM content search issue using com.day.cq.wcm.foundation.Search api

我正在使用 Touch UI 和 Sighty 使用 AEM 6.3 开发网站。

我想在我们的项目中实现基于标签的搜索功能,它可以使用标签搜索整个网站,我们还希望有你是不是要找功能。

为此,我使用了 com.day.cq.wcm.foundation.Search api 因为它可以帮助我获得结果列表以及满足所有条件的结果集我的要求。

我没有使用 Query Builder api 因为它只为我们提供了严格的结果集,并没有实现 Did You Mean 功能。

一旦我们开始从匿名用户(即未登录 AEM)访问站点 URL,问题就会出现。 但是,一旦我们向匿名用户授予 etc/tags 权限,它就会开始正常工作。

但我不希望将权限授予匿名用户。

什么是合适的解决方案?

有什么other/better解决这个问题的方法吗?

匿名用户需要 etc/tags 权限才能使用此功能。这是因为查询查看标签来计算同义词或 'Did you mean' 逻辑。

But I don't wish to give permission to an anonymous user

您可能担心这里的安全问题。您可以通过以下方式补救:

  • 给匿名用户只读权限
  • 在您的调度程序(或等效层)上阻止 /etc/tags,以便匿名用户无法访问它。

仅需要匿名用户权限才能使查询正确进行过滤。这并不意味着您需要通过您的网站公开 /etc/tags。

由于您是使用过滤标签进行搜索,因此您可以使用 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