단순 검색 구현 안내서 simple-search-implementation-guide

단순 검색 구현은 Adobe Summit 랩 AEM 검색 Demystified ​의 자료입니다. 이 페이지에는 이 실습의 자료가 포함되어 있습니다. 실습 가이드 투어는 이 페이지의 프레젠테이션 섹션에서 실습 통합 문서를 참조하십시오.

검색 아키텍처 개요

프레젠테이션 자료 bookmarks

책갈피 bookmarks-1

도구 tools

챕터 chapters

아래 챕터 링크는 초기 패키지http://localhost:4502 ​에 AEM 작성자에 설치되어 있다고 가정합니다.

패키지 packages

초기 패키지 initial-packages

챕터 패키지 chapter-packages

참조된 자료 reference-materials

수정 및 추가 작업 corrections-and-follow-up

랩 토론의 수정 및 설명, 참석자의 후속 질문에 대한 답변.

  1. 다시 인덱싱을 중지하는 방법

    AEM 웹 콘솔 > JMX을 통해 사용할 수 있는 IndexStats MBean을 통해 다시 인덱싱을 중지할 수 있습니다.

  2. oak 인덱스가 여러 테넌트를 지원하는 방법은 무엇입니까?

    Oak은 콘텐츠 트리 전체에 인덱스 배치를 지원하며 이러한 인덱스는 해당 하위 트리 내에서만 인덱싱됩니다. 예를 들어 /content/site-a/oak:index/cqPageLucene ​은(는) /content/site-a. ​에서만 콘텐츠를 색인화하기 위해 만들 수 있습니다.

    이와 동등한 방법은 /oak:index 아래 인덱스에서 includePathsqueryPaths 속성을 사용하는 것입니다. 예:

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

    이 접근 방식의 고려 사항은 다음과 같습니다.

    • 쿼리는 인덱스의 쿼리 경로 범위와 동일한 경로 제한을 지정하거나 해당 인덱스의 하위 항목이어야 합니다.
    • 범위가 넓은 인덱스(예: /oak:index/cqPageLucene)도 데이터를 인덱싱하므로 중복 수집 및 디스크 사용 비용이 발생합니다.
    • 중복 구성 관리(예: 동일한 쿼리 세트를 충족해야 하는 경우 여러 테넌트 인덱스에 동일한 indexRules 추가)
    • 이 방법은 AEM Author에서와 같이 사용자 지정 사이트 검색을 위해 AEM Publish 계층에서 가장 잘 제공되며, 쿼리는 서로 다른 테넌트에 대한 콘텐츠 트리 높은 곳에서 실행되는 것이 일반적입니다(예: OmniSearch를 통해). 서로 다른 색인 정의로 인해 경로 제한에만 따라 다른 동작이 발생할 수 있습니다.
  3. 사용 가능한 모든 분석기 목록은 어디에 있습니까?

    Oak은 AEM에서 사용하기 위해 lucene 제공 분석기 구성 요소 집합을 노출합니다.

  4. 같은 쿼리에서 페이지와 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 DebuggerAEM Chrome 플러그인을 통해 쿼리 및 결과를 탐색합니다.

  5. 동일한 쿼리에서 여러 경로를 검색하는 방법

    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 DebuggerAEM Chrome 플러그인을 통해 쿼리 및 결과를 탐색합니다.

recommendation-more-help
bb44cebf-d964-4e3c-b64e-ce882243fe4d