簡易検索の実装ガイド simple-search-implementation-guide

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

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

プレゼンテーション資料 bookmarks

ブックマーク bookmarks-1

ツール tools

chapters

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

パッケージ packages

初期パッケージ initial-packages

チャプターパッケージ chapter-packages

参照資料 reference-materials

修正とフォローアップ corrections-and-follow-up

ラボでのディスカッションからの修正と説明および出席者からのフォローアップの質問への回答。

  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 オーサーの場合と同様に、様々なテナントのコンテンツツリーの上位でクエリが実行されるのが一般的です(オムニサーチ経由など)。インデックスの定義が異なると、パス制限のみに基づく動作が異なる場合があります。
  3. 使用可能なすべてのアナライザーのリストはどこにありますか?

    Oak は、AEM で使用するための lucene-provides アナライザー設定要素のセットを公開します。

  4. 同じクエリでページとアセットを検索するにはどうすればよいですか?

    指定したクエリと同じクエリで複数のノードタイプをクエリする機能が 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 プラグインを使用して、クエリと結果を調べます。

  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 デバッガーAEM Chrome プラグインを使用して、クエリと結果を調べます。

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