インデックス作成

Adobe Experience Manager は、web サイトの特定のセクションにある、公開されたすべてのページのインデックスを保持する方法を提供します。これは通常、リストやフィードを構築し、ページやコンテンツフラグメントの検索やフィルタリングのユースケースを有効にするために使用されます。

AEMでは、このインデックスをスプレッドシートに保持し、JSON を使用してアクセスできます。 詳しくは、 スプレッドシートと JSON のドキュメントを参照してください。

まず、Excel ワークブックまたはGoogle スプレッドシートをプレビューしてクエリインデックスを作成する概念を紹介します。 GitHub リポジトリの helix-query.yaml というファイルに既にカスタムクエリ定義がある場合、その方法でインデックスを作成することはできなくなりました。 すべての新しいインデックスは、その helix-query.yaml に手動で追加する必要があります。

初期クエリインデックスの設定

この節では、バックエンドのすべてのドキュメントのインデックスを作成するクエリインデックスをルートフォルダーに作成します。

  1. SharePoint サイトまたはGoogle ドライブを指すマウントポイントを使用して fstab.yaml を設定したら、ルートフォルダーに移動します。
  2. バックエンドに応じて、SharePointの場合は query-index.xlsx という名前のワークブック、Google Drive の場合は query-index という名前のスプレッドシートを作成します。
  3. そのスプレッドシートまたはブックで、raw_index という名前のシートを作成します。

インデックスに追加するプロパティの設定

  1. query-index ドキュメントで、ヘッダー行を追加し、最初の列にヘッダー名として path を追加します。
  2. ヘッダーラインの次の列に、レンダリングされたHTML ページから抽出する必要があるその他のすべてのプロパティを追加します。

Google Drive にある次の例では、抽出されたフィールドは titleimagedescriptionlastModified です。

ページには、公開時にインデックスが付けられます。 インデックスからページを削除するには、非公開にする必要があります。

カスタムインデックス定義を使用しない単純なシナリオの場合、メタデータプロパティ robots noindex に設定されたページは、AEMによるインデックス作成から自動的に除外されます。 (いくつかの特別なシナリオがあります。詳しくは、「ロボットの特別なシナリオ の節を参照てください。

次の表に、HTMLページで使用可能なプロパティとそのプロパティが抽出される場所をまとめます。

名前
説明
author
head 要素内の author という名前のメタタグのコンテンツを返します。
title
head 要素内の og:title メタプロパティのコンテンツを返します。
date
head 要素内の publication-date という名前のメタタグのコンテンツを返します。
image
head 要素内の og:image メタプロパティのコンテンツを返します。
category
head 要素内の category という名前のメタタグのコンテンツを返します。
tags

head 要素内の article:tag という名前のメタタグのコンテンツを配列として返します。

配列の処理について詳しくは、ドキュメント スプレッドシートと JSON を参照してください。

description
head 要素内の description という名前のメタタグのコンテンツを返します。
robots
head 要素内の robots という名前のメタタグのコンテンツを返します。
lastModified
ドキュメントの応答ヘッダー Last-Modified 値を返します。

追加された他のすべてのヘッダーに対して、インデクサーは対応する名前を持つメタタグを検索しようとします。

インデックスのアクティブ化

インデックスをアクティブ化するには、サイドキックを使用してスプレッドシートをプレビューします。 これにより、インデックス設定が作成されます。

インデックスの確認

Admin Service には API エンドポイントがあり、ページのインデックス表現を確認できます。 GitHub の所有者、リポジトリ、ブランチ、所有者およびページへのリソースパスを指定した場合、そのエンドポイントは次のようになります。

https://admin.hlx.page/index/<owner>/<repo>/<branch>/<path>

データノードにページのインデックス表現が含まれる JSON 応答が得られます。

インデックス設定のデバッグ

AEM CLI には、クエリ設定を変更するたびにインデックスレコードを印刷する機能があります。この機能は、正しい CSS セレクターを見つけるのに役立ちます。

$ aem up --print-index

詳しくは、AEM CLI GitHub ドキュメントを参照してください。また、この機能について詳しくは、この ビデオをご覧ください。

追加のインデックス設定の指定

独自のインデックス設定を作成して、独自のカスタム インデックス設定を定義できます helix-query.yaml. これにより、同じ helix-query.yaml ージに複数のインデックス設定を含めて、サイトの一部を異なる Excel ワークブックまたはGoogle スプレッドシートにインデックス作成できます。 詳しくは、ドキュメント インデックス作成のリファレンスを参照してください。

ロボットの特殊シナリオ

サイトのインデックス設定と併せて、AEMでページのインデックスを作成する方法に関して、いくつかのニュアンスがあります。 見てみましょう。

次の 2 つの状況では、ページメタデータで robotsnoindex に設定しても、AEMによるインデックス作成が妨げら ません

  • query-index.xlsxrobots 列が追加されました
  • Github リポジトリに helix-query.yaml があります。つまり、カスタムインデックス定義 を定義しました。

レコメンデーション

  1. カスタムインデックス定義がない場合、要件がない限り、インデックスシートに robots 列を追加 しない することをお勧めします。
    インデックスシートに列 robots 追加すると、メタデータが noindex. に設定されている場合でも、AEMによってページのインデックスが作成 robots れます
  2. カスタムインデックス定義がある場合、ページメタデータで robotsnoindex に設定しているかどうかに関係なく、ページはAEMによってインデックス付けされます。 この問題が発生しないようにするには、スプレッドシートフィルターを使用して、メタデータが noindex に設定されているインデックスからページ robots 削除します。 詳しくは、以下の「 適用noindex カスタムインデックス定義を使用した設定」というタイトルの節を参照してください。

カスタムインデックス定義を使用して「noindex」設定を強制する

helix-query.yaml で独自のカスタムインデックス定義を定義した場合、robots プロパティを noindex に設定しても、ページのインデックス作成を防止することはできません。 このような状況で設定を強制する noindex は、次の手順を実行します。

  1. query-index.xlsx に「helix-default」という名前のシートを作成します。 この後、query-index.xlsx スプレッドシートには 2 枚 “raw_index」と “helix-default」が必要です。 「“raw_index」シートは、すべての生のインデックス付きデータを保持するためのものです。
  2. カスタム helix-query.yaml (プロジェクトの Github リポジトリに存在する必要があります)を変更し、robots プロパティを追加して、インデックスが作成されるようにします。
  3. 次に、query-index.xlsx スプレッドシートで “helix-default" シートを設定し、Excel 式を使用して自動的に入力します。これにより robots プロパティが noindex に設定されている raw_index のすべての行が helix-default シートにコピーされなくなります。 これは、次の =FILTER(Table1,NOT(Table1[robots]="noindex")) のような Excel の式を使用して実行できます
  4. これで、らせん既定シートには raw_index プロパティが noindex に設定されていない robots の行のみが含まれます。
  5. インデックスを作成するページを公開していることを確認してください。
  6. ここで、通常のようにインデックスを取得する場合は helix-defaultsheet からデータを取得するだけです。つまり、robot property に https://<branch>--<repo>-<org>.hlx.page/query-index.json を設定してインデックスを取得することが明示的に禁止されていないエントリ noindex す。
recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec