簡易検索実装ガイド

簡易検索の実装は、AdobeサミットラボAEM Search Demystified​の資料です。 このページには、このラボの資料が含まれています。 実習のガイド付きツアーについては、このページの「プレゼンテーション」セクションでLabワークブックを参照してください。

検索アーキテクチャの概要

プレゼンテーション資料

ブックマーク

ツール

以下のチャプターリンクは、初期パッケージが AEMオ ーサーインストールされていることを前提としています(http://localhost:4502

パッケージ

初期パッケージ

チャプターパッケージ

参照マテリアル

修正とフォローアップ

ラボでのディスカッションの修正と説明、参加者によるフォローアップ質問への回答。

  1. インデックスの再作成を停止する方法

    インデックス再作成は、AEM Webコンソール/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(*, 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 DebuggerおよびAEM 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(*, 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 DebuggerおよびAEM Chromeプラグインを使用して、クエリと結果を調べます。

このページ