Documentation

検索結果の動作

前回は、 検索結果を表示する方法を 学びました。 検索結果を強化できる追加の検索結果の概念と構成があります。

ファセットによる結果のフィルタリング

結果はファセットを使ってフィルタリングされます。 ユーザーが検索ワードを入力すると、検索結果のリストと検索ファセットが表示されます。検索ファセットとは、共通の特徴を持つ結果をグループ化するバケットのようなものです。

管理者はファセットを設定することができます。 詳しくは 検索ファセット をご覧ください。

検索結果の関連性

検索エンジンは、検索結果の順位付けに、検索エンジンが算出したスコアである「関連性」を用います。 検索結果のスコアには、使用する検索エンジンによって様々な要因があります。

結果ランキング は、返された検索結果の順序をコントロールするのに役立ちます。

権限と検索結果

アセットに 表示権限 がないユーザーは、検索結果にそのアセットが表示されません。 サイト管理者の役割を持つログインしたユーザーは、ゲストよりも多くの検索結果を見ることができます。

権限チェックには2つのラウンドがあります。 最初の権限チェックであるプレフィルタリングは、検索エンジンのインデックスで行われます。 データベースのアクセス許可情報をチェックするよりも高速ですが、検索インデックスに古いアクセス許可情報が含まれる場合があります。 サーチエンジンのインデックスが正しく最新の権限情報を持っていることを保証するために、Liferayは結果を表示する前に、ポストフィルタリングという最後の2回目の権限チェックを行います。

初期の権限チェック

検索結果の許可フィルタリングの最初のラウンドは、検索クエリにフィルタ句を追加します。 これにより、検索エンジンから返ってくる検索結果には、現在のユーザーが閲覧できる結果のみが含まれるよう、事前にフィルターがかけられます。

この最初の権限チェックは、[コントロールパネル]→ [設定] → [システム設定] → [検索] → [権限チェッカー]で設定できます。

権限チェッカーの設定で、権限の期間制限を設定します。

権限期間制限: このレベルの権限チェックが中止される前に、検索クエリに追加される権限検索句の数を制限します。 権限チェックは、以下で説明する最終的な権限フィルタリングのみに依存します。

権限の条件を制限する唯一の理由はパフォーマンスです。 多くのサイトおよび組織への管理アクセス権を持つユーザーは、クエリに追加された多くの権限条件を生成します。 クエリ内の用語が多すぎると、検索エンジンがタイムアウトする可能性があります。

最終的な権限の確認

結果をUIで発表する前に、最終的な許可の確認を行います。 例えば、ユーザーが liferay を検索すると、検索エンジンは関連するすべてのフォーラムの投稿を返します。 検索結果は、関連するフォーラムの投稿のリストを繰り返し表示する際に、最後に投稿の権限チェックを行い、ユーザーが投稿とそのカテゴリを表示できることを確認します。 一致するフォーラムの投稿が、ユーザーに閲覧権限のないカテゴリーに存在する場合は、検索結果のリストから除外されます。

この最終的な権限チェックは、[コントロールパネル] &rarr [ 設定] → [システム設定] → [検索]→ [デフォルトの検索結果の権限フィルター] で設定できます。 次の2つの設定が含まれます。

デフォルトの検索結果の権限フィルタ設定で、追加の権限を設定します。

パーミッションフィルター済み検索結果精度のカウンターしきい値: 結果がカウントされる前に権限・フィルタリングする検索結果の最大数を指定します。 しきい値を高くすると、カウントの精度は向上しますが、パフォーマンスは低下します。 現在表示されているページの結果は常にチェックされるため、検索結果のページ分割デルタよりも小さい値を指定すると、この動作が事実上無効になります。

検索クエリの結果ウィンドウの上限を設定します。 各権限チェックリクエストの最大バッチサイズを設定します。 これもページネーションの影響を受けています。 例えば、1ページに100件の検索結果があり、ユーザーが検索結果の200ページ目までジャンプしたい場合、1ページ目から200ページ目までのすべての検索結果をチェックして、ユーザーに権限があることを確認する必要があります。 権限チェックの結果は20,000です。 これを検索エンジンとの間で一度に行うと、パフォーマンスの問題が発生する可能性があります。 各権限チェックリクエストの最大バッチサイズを設定します。

検索とステージング

ステージングでは、コンテンツはまずプレビューやテスト環境に置かれた後、一般公開(ライブサイト)されます。 検索インデックスに追加されたコンテンツは、検索APIがアイテムがライブであるかどうかを解読できるようにマークされます。 ライブ版サイトでは、ライブ版サイト用にマークされたコンテンツのみが検索可能となります。 本サイトのステージングバージョンでは、ライブまたはステージングされたすべてのコンテンツが検索可能です。

検索と公開

公開 を有効にすると、コンテンツが特定のパブリケーションに関連付けられます。 公開に追加されたコンテンツは、検索APIがアイテムが生産中であるかどうかを解読できるようにマークされます。 本番のサイトでは、 公開された コンテンツのみが検索結果として返されます。 進行中の公開では、プロダクションコンテンツや特定の公開に対するコンテンツを返すことができます。

結果の要約

結果の要約には、アセットの開発者が、アセットを検索する人にとって最も有用であると考えたドキュメントの情報が含まれています。 各アセットでは、サマリーに含まれるフィールドが異なります。 テキストコンテンツのあるアセットでは、タイトルとコンテンツの一部を含む一般的なサマリー形式で、タイトルが最初に表示されます。 2行目には必ずアセットタイプが表示され、最後の行には検索ワードにマッチしたコンテンツのスニペットが表示されます。 ドキュメントやメディアドキュメントなど、コンテンツフィールドのないアセットは、代わりに説明を表示します。

注釈

ユーザーは異なります。 ユーザーの結果のサマリーには、ユーザーのフルネームとアセットタイプ(ユーザー)のみが表示されます。

ユーザーの場合は、ユーザーのフルネームのみが表示されます。

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

説明文を要約して表示するドキュメントフォルダ。

どのフィールドをサマリーに対応させるかはアセット開発者が決定しますが、検索時にはサマリーフィールドのどの部分を表示するかを正確に決定するロジックが実行されます。 例えば、 コンテンツ フィールドには多くのテキストが含まれていますが、サマリーではそのすべてが表示されません。 その代わりに、フィールドのテキストの関連する部分が表示されます。 検索されたキーワードがサマリーフィールドに存在する場合、フィールドのその部分がサマリーで使用されます。 さらに、マッチしたキーワードはサマリーでハイライトされます。

結果のサマリーにどのフィールドを含めるかを決定するために、「検索結果」ウィジェットは3つの点を考慮します。

  1. 概要に含めるアセット固有のフィールドは、 ModelSummaryContributor Javaクラス(Liferay独自のクラスおよびサードパーティの開発者によってデプロイされたクラス)で定義されます。 このロジックの古い実装は、 Indexer.getSummaryで提供されていました。

  2. 検索結果のサマリーで表示可能なフィールドは、検索結果の表示ロジック( SearchResultsSummaryDisplayBuilder および SearchResultsSummaryDisplayContext )によって定義されます。

  3. ウィジェットテンプレート は、 検索結果 ウィジェット(デフォルトでは List)で使用されており、利用可能なフィールドのどれがサマリーに含まれるかなど、検索結果の表示に関するすべての事柄について最終的な決定権を持っています。

ハイライト

概要に表示される検索用語はデフォルトで強調表示 されています。 望ましくない場合は、 ウィジェット設定画面 で無効にしてください。

検索キーワードは、検索結果の一覧でハイライト表示されます。

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

検索結果の中には、必ずしもハイライトされた用語がないものもあります。

検索結果のページを返す

Liferay 7.2では、公開コンテンツページの ページコンテンツ が[検索結果]ウィジェットに返されます。 例えば、公開されているページのパラグラフフラグメントで見つかったテキストを検索することができます。

対照的に、最新のLiferay 7.2および7.3、そしてLiferay 7.4のすべてのリリースでは、プライベートコンテンツページおよびステージングされたページのコンテンツは、ユーザーの閲覧許可の有無にかかわらず、インデックスされず、したがって検索結果のリストにも返されません。

非公開ページのコンテンツは検索できません。

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

公開・非公開ページのタイトルを検索することができます。

コンテンツページのインデックスに登録されているフィールドを確認するには、[検索結果]ウィジェットの [ドキュメントフォームに結果を表示] の設定を有効にします。 詳しくは、 検索エンジンのドキュメントを検査する をご覧ください。

コンテンツページのドキュメントビューを検査して、どのフィールドがインデックスされているかを確認します。