简单搜索实现指南

简单搜索实现是​Adobe峰会实验室AEM Search Demystified​中的材料。 本页包含本实验的材料。 有关实验的指导性导览,请视图本页“演示”部分中的实验室工作簿。

搜索架构概述

演示文稿材料

书签

工具

以下章节链接假定AEM作 上已安装初始包,网址为http://localhost:4502

初始包

章节包

参考材料

更正和后续

实验室讨论的更正和说明以及与会者对后续问题的回答。

  1. 如何停止重新索引?

    可通过AEM Web Console > JMX提供的IndexStats MBean停止重新索引

  2. Oak索引如何支持多个租户?

    Oak支持在内容树中放置索引,这些索引将仅在该子树中进行索引。 例如,可创建​/content/site-a/oak:index/cqPageLucene​以仅在​/content/site-a下索引内容。

    等效的方法是在​/oak:index​下的索引上使用​includePaths​和​queryPaths​属性。 例如:

    • /oak:index/siteAcqPageLucene@includePaths=/content/site-a
    • /oak:index/siteAcqPageLucene@queryPaths=/content/site-a

    此方法的考虑因素包括:

    • 查询必须指定与索引的查询路径范围相等的路径限制,或者是其中的子体。
    • 范围更广的索引(例如/oak:index/cqPageLucene)还将为数据编制索引,从而导致重复引入和磁盘使用成本。
    • 可能需要重复配置管理(例如 在多个租户索引上添加相同的indexRules(如果它们必须满足相同的查询集)
    • 此方法在AEM发布层中最适合用于自定义站点搜索,与在AEM作者中一样,在内容树中为不同租户(例如,通过OmniSearch)执行查询的常见情况是,不同的索引定义可能仅根据路径限制导致不同的行为。
  3. 所有可用分析器的列表位于何处?

    Oak公开了一组用于AEM的Lucene提供的分析器配置元素。

  4. 如何在同一查询中搜索页面和资产?

    AEM 6.3中的新增功能是在提供的同一查询中对多个节点类型进行查询的能力。 以下QueryBuilder查询。 请注意,每个“子查询”都可解析到自己的索引,因此在本例中,cq:Page子查询解析为/oak:index/cqPageLucene,而dam:Asset子查询解析为/oak:index/damAssetLucene

    group.p.or=true
    group.1_group.type=cq:Page
    # add all page restrictions to this group
    group.2_group.type=dam:Asset
    # add all asset restrictions to this group
    

    会生成以下查询和查询计划:

    QUERY:(//element(*,%20cq:Page?lang=zh-Hans) | //element(*, dam:Asset))
    
    PLAN: [cq:Page] as [a] /* lucene:cqPageLucene(/oak:index/cqPageLucene?lang=zh-Hans) *:* */ union [dam:Asset] as [a] /* lucene:damAssetLucene(/oak:index/damAssetLucene?lang=zh-Hans) *:* */
    

    通过QueryBuilder DebuggerAEM Chrome插件浏览查询和结果。

  5. 如何在同一查询中搜索多个路径?

    AEM 6.3的新增功能是在提供的同一查询中跨多条路径进行查询。 以下QueryBuilder查询。 请注意,每个“子查询”都可能解析为自己的索引。

    group.p.or=true
    group.1_group.type=cq:Page
    group.1_group.path=/content/docs/en/6-2
    # add all page restrictions to this group
    group.2_group.type=cq:Page
    group.2_group.path=/content/docs/en/6-3
    # add all asset restrictions to this group
    

    导致以下查询和查询计划

    QUERY: (/jcr:root/content/docs/en/_x0036_-2//element(*,%20cq:Page?lang=zh-Hans) | /jcr:root/content/docs/en/_x0036_-3//element(*, cq:Page))
    
    PLAN: [cq:Page] as [a] /* traverse "/content/docs/en/6-2//*" where isdescendantnode([a], [/content/docs/en/6-2]) */ union [cq:Page] as [a] /* traverse "/content/docs/en/6-3//*" where isdescendantnode([a], [/content/docs/en/6-3]) */
    

    通过QueryBuilder DebuggerAEM Chrome插件浏览查询和结果。

On this page