検索結果の動作
前回は、検索結果を表示する方法を 学習しました 。 検索結果を強化できる追加の検索結果の概念と構成があります。
- ファセットによる検索結果のフィルタリング
- 検索結果の関連性の把握
- 権限が検索結果に与える影響
- ステージング環境での検索結果
- 出版物が有効な場合の検索結果
- 検索結果のサマリー
- 検索結果のキーワード:ハイライト
- 検索結果とコンテンツページ
- 検索結果でオブジェクトを返す
ファセットを使用した結果のフィルタリング
結果はファセットを使ってフィルタリングされます。 ユーザーが検索ワードを入力すると、検索結果のリストと検索ファセットが表示されます。検索ファセットとは、共通の特徴を持つ結果をグループ化するバケットのようなものです。
管理者はファセットを設定することができます。 詳細については、 検索ファセット をご覧ください。
検索結果の関連性
検索エンジンは関連性—検索エンジン—によって計算されたスコアを使用して結果をランク付けします。 検索結果のスコアには、使用する検索エンジンによって様々な要因があります。
結果のランキング は、返される検索結果の順序を制御するのに役立ちます。
権限と検索結果
アセットに対する 表示権限 を持たないユーザーには、検索結果にアセットが表示されません。 サイト管理者ロールを持つログインユーザーには、ゲストよりも多くの検索結果が表示される可能性があります。
権限チェックには2つのラウンドがあります。 最初の権限チェックであるプレフィルタリングは、検索エンジンのインデックスで行われます。 データベースの権限情報をチェックするよりも高速ですが、検索インデックスに古い権限情報が含まれる場合があります。 検索エンジンのインデックスに正確で最新の権限情報が確実に含まれるように、Liferay は結果を表示する前に、フィルタリング後に 2 回目の最後の権限チェックを実行します。
初期の権限チェック
検索結果の許可フィルタリングの最初のラウンドは、検索クエリにフィルタ句を追加します。 これにより、検索エンジンから返される結果は事前にフィルタリングされ、検索インデックスで使用可能な権限情報に基づいて現在のユーザーが表示できる結果のみが含まれるようになります。
この初期の権限チェックは、コントロール パネル → 構成 → システム設定 → 検索 → 権限チェッカーで設定できます。

権限期間制限: このレベルの権限チェックが中止される前に、検索クエリに追加される権限検索句の数を制限します。 権限チェックは、以下で説明する最終的な権限フィルタリングのみに依存します。
権限の条件を制限する唯一の理由はパフォーマンスです。 多数のサイト、組織、アカウントへの管理アクセス権を持つユーザーは、クエリに追加される多数の権限用語を生成します。 クエリ内の用語が多すぎると、検索エンジンがタイムアウトする可能性があります。
最終的な権限の確認
UI に結果を表示する前に、最終的な権限チェックが行われます。 たとえば、ユーザーが liferayを検索すると、検索エンジンはインデックス化された権限を考慮して、関連するすべてのフォーラム投稿を返します。 検索結果は、返されたフォーラム投稿のリストを反復処理しながら、データベースの現在の状態に対して権限をチェックし、ユーザーが投稿とそのカテゴリを表示できることを確認します。 ユーザーが表示する権限を持たないカテゴリに一致するフォーラム投稿が存在する場合、その投稿は検索結果のリストから除外されます。
この最終段階の権限チェックは、コントロール パネル → 構成 → システム設定 → 検索 → 既定の検索結果権限フィルターで設定できます。 次の2つの設定が含まれます。

パーミッションフィルター済み検索結果精度のカウンターしきい値: 結果がカウントされる前に権限・フィルタリングする検索結果の最大数を指定します。 しきい値を高くすると、カウントの精度は向上しますが、パフォーマンスは低下します。 現在表示されているページの結果は常にチェックされるため、検索結果の1ページの表示数よりも小さい値を指定すると、この動作が事実上無効になります。 この設定を構成する場合は、検索クエリ結果ウィンドウの制限に合わせてください。
権限フィルタリングの時間制限: 権限フィルタリングに許可する時間をミリ秒単位で設定します。 到達すると、権限フィルタリングは現在のバッチの処理を終了し、回避するために保留中のバッチを破棄します。 デフォルト値 0 は制限がないことを示します。
検索クエリの結果ウィンドウの上限を設定します。 各権限チェックリクエストの最大バッチサイズを設定します。 これもページ区切りの影響を受けます。 制限がない場合、ページあたり 100 件の結果があり、ユーザーが検索結果の 200 ページまでジャンプしたい場合は、1 ページ目から 200 ページ目までのすべての結果をチェックして、ユーザーに表示権限があることを確認する必要があります。 権限チェックの結果は20,000です。 これを検索エンジンとの間で一度に行うと、パフォーマンスの問題が発生する可能性があります。
検索とステージング
ステージングでは、コンテンツは、一般公開される前に (ライブサイトで) プレビューおよびテスト環境に配置されます。 検索インデックスに追加されたコンテンツは、検索APIがアイテムがライブであるかどうかを解読できるようにマークされます。 ライブ版サイトでは、ライブ版サイト用にマークされたコンテンツのみが検索可能となります。 本サイトのステージングバージョンでは、ライブまたはステージングされたすべてのコンテンツが検索可能です。
検索と公開
パブリケーション を有効にすると、コンテンツは特定のパブリケーションに関連付けられます。 公開に追加されたコンテンツは、検索APIがアイテムが生産中であるかどうかを解読できるようにマークされます。 サイトの製品版では、 公開 されたコンテンツのみが検索結果に返されます。 進行中の公開では、プロダクションコンテンツや特定の公開に対するコンテンツを返すことができます。
結果の要約
結果の要約には、アセットの開発者が、アセットを検索する人にとって最も有用であると考えたドキュメントの情報が含まれています。 各アセットでは、サマリーに含まれるフィールドが異なります。 テキストコンテンツのあるアセットでは、タイトルとコンテンツの一部を含む一般的なサマリー形式で、タイトルが最初に表示されます。 2行目には必ずアセットタイプが表示され、最後の行には検索ワードにマッチしたコンテンツのスニペットが表示されます。 ドキュメントとメディアドキュメントなど、コンテンツ項目のないアセットは、代わりに説明を表示します。
ユーザーは異なります。 ユーザー結果の概要には、ユーザーのフルネームと資産タイプ (ユーザー) のみが表示されます。

他のアセットを含むアセット(Webコンテンツおよびドキュメント & Mediaフォルダ)や、コンテンツが表示に適していないアセット(動的データリストレコードおよびカレンダーイベント)については、タイトル、アセットタイプ、および説明を結果のサマリーに表示する方が合理的です。

Liferay DXP 2024.Q2/Portal GA120 以降、ユーザーは検索結果ウィジェットからドキュメントとメディアドキュメントを直接ダウンロードできます。 すべてのすぐに使用できるウィジェット テンプレートでは、ドキュメントとメディア ドキュメントの結果の概要に、ダウンロード権限を持つユーザー向けのダウンロード リンクが含まれています。 カスタム表示テンプレート を調整して、ダウンロード リンクを追加する必要があります。 ダウンロード リンクは、 ウィジェット表示テンプレート エディターで定義済み変数として使用できます。

どのフィールドをサマリーに対応させるかはアセット開発者が決定しますが、検索時にはサマリーフィールドのどの部分を表示するかを正確に決定するロジックが実行されます。 例えば、 コンテンツ フィールドには多くのテキストが含まれていますが、サマリーではそのすべてが表示されません。 その代わりに、フィールドのテキストの関連する部分が表示されます。 検索されたキーワードがサマリーフィールドに存在する場合、フィールドのその部分がサマリーで使用されます。 さらに、マッチしたキーワードはサマリーでハイライトされます。
結果のサマリーにどのフィールドを含めるかを決定するために、「検索結果」ウィジェットは3つの点を考慮します。
-
概要に含めるアセット固有のフィールドは、
ModelSummaryContributorJavaクラス(Liferay独自のクラスおよびサードパーティの開発者によってデプロイされたクラス)で定義されます。 このロジックの古い実装は、Indexer.getSummaryで提供されていました。 -
検索結果サマリーに表示できるフィールドは、検索結果表示ロジック (
SearchResultsSummaryDisplayBuilderおよびSearchResultsSummaryDisplayContext) によって定義されます。 -
検索結果 ウィジェット (デフォルトではリスト ) で使用される ウィジェット テンプレート には、利用可能なフィールドのどれがサマリーに含まれるかなど、検索結果の表示に関連するすべての事項の最終決定権があります。
ハイライト
概要に表示される検索用語はデフォルトでハイライト表示されています。 これが望ましくない場合は、 ウィジェット設定画面で無効にしてください。

ハイライトは、なぜその結果が返されたのかを示唆する視覚的な手がかりとして役立ちますが、注意が必要です。 ヒットした商品のスコアが高く、結果的に検索結果の上位に表示されても、サマリーにハイライトが表示されないことがあります。 これは、すべてのインデックス付きフィールドが要約に表示されるわけではないためです。 Arthur C. Clarke という名前のユーザーを考えてみましょう。 彼は、 acc@authors.orgの電子メールアドレスを持っており、検索可能です。 ユーザーの結果の概要にはユーザーのフルネームのみが含まれるため、電子メール アドレスで Clarke 氏を検索すると、ユーザーは返されますが、用語は強調表示されません。

検索結果のページを返す
Liferay 7.2 以降では、パブリック コンテンツ ページからの ページ コンテンツ が検索結果ウィジェットに返されます。 例えば、公開されているページのパラグラフフラグメントで見つかったテキストを検索することができます。
対照的に、最新の Liferay 7.2 と 7.3、およびすべての Liferay 7.4 以降のリリースでは、プライベート コンテンツ ページとステージングされたページのページ コンテンツはインデックス化されず、ユーザーのページ表示権限に関係なく、検索結果のリストに返されません。

非公開ページやステージングされたページではコンテンツフィールドはインデックスされず検索もできませんが、他のフィールドは利用可能です。 例えば、公開されているコンテンツページと非公開のコンテンツページの両方のタイトルフィールドが7.2ではインデックスされているため、非公開のコンテンツページのタイトルに一致するキーワードを検索しても、「検索結果」ウィジェットにヒットします。

Liferay 7.4 U22+ および GA22+ の場合、新規インストールではプライベート ページが無効になります。 ただし、必要に応じて有効にすることができます。 詳細については、「 プライベート ページの有効化 」を参照してください。
コンテンツページのインデックスに登録されているフィールドを確認するには、[検索結果]ウィジェットの [ドキュメントフォームに結果を表示] の設定を有効にします。 詳細については、 検索エンジンドキュメントの検査 を参照してください。

Liferay 7.4 GA25+/U25+ では、ウィジェット ページを検索することもできます (タイトルのみ)。
検索結果でオブジェクトを返す
詳細タブで「インデックス検索を有効にする」設定を選択すると、各 オブジェクト定義 を検索可能にすることができます。 有効にすると、 各フィールド を検索可能として設定することもできます。これにより、オブジェクト エントリ を照会して 、検索結果ウィジェットに返すことができます。

Liferay 7.4 U64+/GA64+ の場合、検索結果内のオブジェクトエントリをクリックすると、エントリの 表示ページ にリダイレクトされ、結果の詳細が表示されます。 オブジェクトの表示ページ テンプレートが存在しない場合は、デフォルトのレイアウトが使用されます。 検索ページに戻るには、エントリの詳細ビューの戻る矢印をクリックします。

Liferay DXP 2024.Q1+/Portal GA112+では、検索ユーザーがアカウントまたは通常スコープのロールで アカウント > アカウントエントリ:表示 権限を持っている場合、検索結果に アカウント制限オブジェクト エントリが表示されます。