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

时间:2017-07-26 13:15:36

标签: cq5 aem

我正在使用AEM 6.3开发一个使用Touch UI& Sighty。

我想在我们的项目中实现基于标签的搜索功能,可以使用标签搜索整个网站,我们也想要您的意思功能。

为此,我使用了 com.day.cq.wcm.foundation.Search api,因为它帮助我获取结果列表以及您的意思是满足我所有要求的结果集。

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

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

但我不想给匿名用户许可。

对此有什么合适的解决方案?

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

2 个答案:

答案 0 :(得分:1)

匿名用户需要library(tidyverse) df <- data.frame( ID = c(200,200,200,200,201,201,201,201), variable = c('B/L', 'Wk2', 'Wk4', 'Wk8', 'B/L', 'Wk2', 'Wk4', 'Wk8'), value = c(81.3, 6.1, 2.0, 2.2, 123.3, 89.3, 72.4, 55.8)) group_by(df, ID) %>% do({mutate(., value = c(NA, diff(value)), variable = paste0(unique(variable), 'delta'))}) %>% bind_rows(df) %>% arrange(ID, variable) 权限才能使此功能正常运行。这是因为查询会查看标签以找出同义词,或者“你的意思是&#39;逻辑。

  

但我不想给匿名用户许可

你可能担心这里的安全问题。您可以通过以下方式解决此问题:

  • 向匿名用户授予只读权限
  • 阻止调度程序(或等效图层)上的/ etc /标记,以便无法从匿名用户访问它。

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

答案 1 :(得分:0)

由于您使用过滤器标签进行搜索,因此您可以使用TagManager Api获取标记有特定标签的所有资源。 ex: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