【问题标题】:AEM content search issue using com.day.cq.wcm.foundation.Search api使用 com.day.cq.wcm.foundation.Search api 的 AEM 内容搜索问题
【发布时间】:2017-07-26 13:15:35
【问题描述】:

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

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

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

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

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

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

什么是合适的解决方案?

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

【问题讨论】:

    标签: aem


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 非常感谢您的解决方案。但是,除了 com.day.cq.wcm.foundation.Search api 之外,还有其他我们可以用于“您的意思是”功能的 API 吗?
    • 搜索 API 是一个专门的查询引擎,因此您可以根据需要编写自己的查询引擎,但通常它取决于带有内容标记的橡木索引定义。我建议打开一个新问题,以便更广泛的社区可以回答。
    【解决方案2】:

    由于您使用过滤标签进行搜索,您可以使用 TagManager Api 来获取所有带有特定标签的资源。 例如: RangeIterator 查找(字符串 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多