インデックス作成
Adobe Experience Manager は、web サイトの特定のセクションにある、公開されたすべてのページのインデックスを保持する方法を提供します。これは通常、リストやフィードを構築し、ページやコンテンツフラグメントの検索やフィルタリングのユースケースを有効にするために使用されます。
AEMでは、このインデックスをスプレッドシートに保持し、JSON を使用してアクセスできます。 詳しくは、 スプレッドシートと JSON のドキュメントを参照してください。
まず、Excel ワークブックまたはGoogle スプレッドシートをプレビューしてクエリインデックスを作成する概念を紹介します。 GitHub リポジトリの helix-query.yaml というファイルに既にカスタムクエリ定義がある場合、その方法でインデックスを作成することはできなくなりました。 すべての新しいインデックスは、その helix-query.yaml に手動で追加する必要があります。
初期クエリインデックスの設定
この節では、バックエンドのすべてのドキュメントのインデックスを作成するクエリインデックスをルートフォルダーに作成します。
- SharePoint サイトまたはGoogle ドライブを指すマウントポイントを使用して
fstab.yamlを設定したら、ルートフォルダーに移動します。 - バックエンドに応じて、SharePointの場合は
query-index.xlsxという名前のワークブック、Google Drive の場合はquery-indexという名前のスプレッドシートを作成します。 - そのスプレッドシートまたはブックで、
raw_indexという名前のシートを作成します。
インデックスに追加するプロパティの設定
query-indexドキュメントで、ヘッダー行を追加し、最初の列にヘッダー名としてpathを追加します。- ヘッダーラインの次の列に、レンダリングされたHTML ページから抽出する必要があるその他のすべてのプロパティを追加します。
Google Drive にある次の例では、抽出されたフィールドは title、image、description、lastModified です。
ページには、公開時にインデックスが付けられます。 インデックスからページを削除するには、非公開にする必要があります。
カスタムインデックス定義を使用しない単純なシナリオの場合、メタデータプロパティ robots noindex に設定されたページは、AEMによるインデックス作成から自動的に除外されます。 (いくつかの特別なシナリオがあります。詳しくは、「ロボットの特別なシナリオ の節を参照てください。
次の表に、HTMLページで使用可能なプロパティとそのプロパティが抽出される場所をまとめます。
追加された他のすべてのヘッダーに対して、インデクサーは対応する名前を持つメタタグを検索しようとします。
インデックスのアクティブ化
インデックスをアクティブ化するには、サイドキックを使用してスプレッドシートをプレビューします。 これにより、インデックス設定が作成されます。
インデックスの確認
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 つの状況では、ページメタデータで robots を noindex に設定しても、AEMによるインデックス作成が妨げら ません。
query-index.xlsxにrobots列が追加されました- Github リポジトリに
helix-query.yamlがあります。つまり、カスタムインデックス定義 を定義しました。
レコメンデーション
- カスタムインデックス定義がない場合、要件がない限り、インデックスシートに
robots列を追加 しない することをお勧めします。
インデックスシートに列robots追加すると、メタデータがnoindex.に設定されている場合でも、AEMによってページのインデックスが作成robotsれます - カスタムインデックス定義がある場合、ページメタデータで
robotsをnoindexに設定しているかどうかに関係なく、ページはAEMによってインデックス付けされます。 この問題が発生しないようにするには、スプレッドシートフィルターを使用して、メタデータがnoindexに設定されているインデックスからページrobots削除します。 詳しくは、以下の「 適用noindexカスタムインデックス定義を使用した設定」というタイトルの節を参照してください。
カスタムインデックス定義を使用して「noindex」設定を強制する
helix-query.yaml で独自のカスタムインデックス定義を定義した場合、robots プロパティを noindex に設定しても、ページのインデックス作成を防止することはできません。 このような状況で設定を強制する noindex は、次の手順を実行します。
query-index.xlsxに「helix-default」という名前のシートを作成します。 この後、query-index.xlsxスプレッドシートには 2 枚“raw_index」と“helix-default」が必要です。 「“raw_index」シートは、すべての生のインデックス付きデータを保持するためのものです。- カスタム
helix-query.yaml(プロジェクトの Github リポジトリに存在する必要があります)を変更し、robotsプロパティを追加して、インデックスが作成されるようにします。 - 次に、
query-index.xlsxスプレッドシートで“helix-default" シートを設定し、Excel 式を使用して自動的に入力します。これによりrobotsプロパティがnoindexに設定されているraw_indexのすべての行がhelix-defaultシートにコピーされなくなります。 これは、次の=FILTER(Table1,NOT(Table1[robots]="noindex"))のような Excel の式を使用して実行できます - これで、らせん既定シートには
raw_indexプロパティがnoindexに設定されていないrobotsの行のみが含まれます。 - インデックスを作成するページを公開していることを確認してください。
- ここで、通常のようにインデックスを取得する場合は
helix-defaultsheet からデータを取得するだけです。つまり、robotproperty にhttps://<branch>--<repo>-<org>.hlx.page/query-index.jsonを設定してインデックスを取得することが明示的に禁止されていないエントリnoindexす。