AEM 中搜索功能的工作原理

How search feature works in AEM

从 AEM 文档中我可以弄清楚如何为 AEM 内容搜索编写查询,但搜索功能在 AEM 中如何工作?哪个包或框架具有搜索内容并返回的魔力。当我使用搜索查询时,内部内容是如何被遍历的?

AEM 使用 OAK 索引来实现搜索引擎。 AEM 存储库是一个数据库,与所有其他数据库一样,它需要索引来执行快速搜索。您可以阅读更多内容:https://docs.adobe.com/docs/en/aem/6-2/deploy/platform/queries-and-indexing.html

通常,您在 /oak:indexes 节点下定义索引(以防 OOTB 索引不够用)。这些索引,从广义上讲,包含索引的属性和性质(异步、全文、属性、词法规则)列表和要索引(或从索引中排除)的路径。

AEM 在您的存储库和数据存储中生成大量 Lucene 索引数据,用于快速查找查询的节点。每当触发查询时,AEM 实例都会循环遍历索引并找到将以最少的遍历成本提供结果的索引。如果没有找到这样的索引,它将求助于节点遍历,这通常对性能不利但有一些有限的边缘情况使用。

您可以将 Solr 和 ElasticSearch 与您的 AEM 实例集成以使用其他高级功能,但这只是对内置引擎的扩展。

搜索和推广(更像是一种外部搜索)与内部索引无关,更像是一个站点爬虫。

查询和搜索是一个非常宽泛的主题,因此我建议您阅读此回复作为摘要,更多详细信息可以从上面的 link 中找到。

我同意 Imran 之前的回答。

问题很笼统,如果您对更多细节感兴趣,例如 Apache Lucene 如何在 AEM 中工作,与外部搜索引擎集成有哪些选项以及如何集成,可在此处获取:

GitHub repository and six write ups - 分步说明如何在 AEM 中使用搜索引擎。