简单搜索实施指南 simple-search-implementation-guide
简单搜索实现是来自 Adobe Summit实验室AEM Search Demystified 的材料。 本页包含本实验中的资料。 有关引导式实验教程,请查看本页“演示文稿”部分中的“实验”工作簿。
演示材料 bookmarks
书签 bookmarks-1
工具 tools
- 索引管理器
- 说明查询
- CRXDE Lite > /oak:index/cqPageLucene
- CRX包管理器
- QueryBuilder调试器
- Oak索引定义生成器
章 chapters
以下章节链接假定在http://localhost:4502
处的AEM作者上安装了初始包
包 packages
初始包 initial-packages
章节包 chapter-packages
引用的材料 reference-materials
更正和跟进 corrections-and-follow-up
实验室讨论的更正和说明,以及与会者后续提问的回答。
-
如何停止重新索引?
可以通过AEM Web Console > JMX提供的IndexStats MBean停止重新索引
-
- 执行
abortAndPause()
以中止重新编制索引。 这将锁定索引以进一步重新索引,直到调用resume()
。 - 执行
resume()
将重新启动索引过程。
- 执行
-
文档:https://jackrabbit.apache.org/oak/docs/query/indexing.html#async-index-mbean
-
-
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 Publish层上用于自定义站点搜索,就像在AEM Author上一样,通常在内容树的高处为不同的租户(例如,通过OmniSearch)执行查询 — 不同的索引定义可能会导致仅基于路径限制的不同行为。
-
所有可用分析器的列表在何处?
Oak公开了一组可在AEM中使用的lucene提供的分析器配置元素。
-
如何在同一查询中搜索页面和Assets?
AEM 6.3的新增功能是在同一提供的查询中查询多个节点类型。 以下QueryBuilder查询。 请注意,每个“子查询”都可以解析为自己的索引,因此在此示例中,
cq:Page
子查询解析为/oak:index/cqPageLucene
,dam:Asset
子查询解析为/oak:index/damAssetLucene
。code language-plain 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
查询和查询计划中的结果:
code language-plain QUERY:(//element(*, cq:Page) | //element(*, dam:Asset)) PLAN: [cq:Page] as [a] /* lucene:cqPageLucene(/oak:index/cqPageLucene) *:* */ union [dam:Asset] as [a] /* lucene:damAssetLucene(/oak:index/damAssetLucene) *:* */
通过QueryBuilder调试器和AEM Chrome插件浏览查询和结果。
-
如何在同一查询中搜索多个路径?
AEM 6.3的新增功能是在同一提供的查询中跨多个路径进行查询。 以下QueryBuilder查询。 请注意,每个“子查询”都可以解析为自己的索引。
code language-plain 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
以下查询和查询计划中的结果
code language-plain QUERY: (/jcr:root/content/docs/en/_x0036_-2//element(*, cq:Page) | /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调试器和AEM Chrome插件浏览查询和结果。