Search Blueprints
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

検索ブループリントの理解

検索ブループリントを使用すると、カスタム コードを展開することなく、ユーザーのニーズに合わせて検索ページのエクスペリエンスをカスタマイズできます。 ブループリントを使用すると、以下のことが可能になります。

  • 文脈を考慮した検索ページを作成します。 例えば、Webコンテンツの記事を検索ユーザーとの近接性でブーストします。
  • どのフィールドを検索するかを明示的に宣言します。 例えば、 userName フィールドを宣言しないようにすることが可能です。
  • 特定のカテゴリーを持つアセットを一定期間ブーストします。 例えば、Liferay Commerceの製品をカテゴリー別に宣伝する季節のキャンペーンを作成します。
  • カスタム フィルター ウィジェット が対応するあらゆるユース ケースは、ブループリントで満たすことができます。 例えば、検索されたキーワードにマッチする特定のフィールドをブーストします。

検索対象や検索方法を制御する必要がある場合、検索ブループリントは必要な機能です。

Liferayのデフォルトの検索エクスペリエンスの構成機能は、時間の経過とともに進化しています。 最新のLiferay DXPリリースでは、すぐに使用できる状態で検索結果(同義語セット および 結果ランキング)を調整し、 カスタムファセットを追加し、 カスタムフィルター を使用して複雑な検索カスタマイズを実行できます。 ただし、これらの構成には制限があり、検索を多用する多くのサイトでは、検索インフラストラクチャのバックエンド コードのカスタマイズが必要になります。 これには、JavaベースのモジュールをLiferayのOSGiランタイムにデプロイする必要があります。

ブループリントは、このようなコードを多用する機能セットではなく、カスタムコードを展開せずに検索ページのクエリをほぼ完全に制御する必要があるユーザー向けに、別のアプローチを採用しています。 ブループリントは、ほとんどすべてのユースケースを満たすことができるUIベースの設定エクスペリエンスを提供します(機能の初期のイテレーションでなくても、機能セットがさらに強固になった後続バージョンで)。

ブループリントとは

簡単に言うと、ブループリントはエレメントで構成され、その上にいくつかの追加設定が施されています。

ブループリント: 検索ブループリントはLiferayの検索動作の設計計画書です。 ほとんどのユーザーにとって、検索エクスペリエンスは 検索バー から始まります。 検索語が入力されると、Liferayの検索インフラストラクチャによって複雑なクエリが構築され、検索エンジンに送信されます。 Search Insights ウィジェットを使用して、Liferay の完全なクエリを確認できます。 このクエリはLiferayの検索ページのデフォルトのブループリントと考えることができ、何がどのように検索されるかを制御します。

要素: 要素は、ブループリント全体を構築するために組み合わされる視覚的な構成要素です。 各要素は、具体的な検索動作を定義するJSONフラグメントによって裏付けられています。 Search Blueprints にはすぐに使用できる要素が用意されており、要素エディタを使用すると、独自の要素を作成したり、既存の要素を複製して、独自のニーズの開始点として使用したりできます。

ブループリントを作成するには、まず、想定しているユースケースから始めます。 デフォルトの検索ページのエクスペリエンスについて、何を変更する必要がありますか? 次に、提供された要素を見て、カスタマイズの構築を開始できるかどうかを確認します。 ブループリントを企画したら、次はそれを作成します。

詳細については、 ブループリントの作成と管理を参照してください。

ブループリントのUIでできること

ブループリントを使用して検索ソリューションを作成するには、要素をブループリントに合成し、ページに適用します。 そのために用意されている機能は以下の通りです。

機能ブループリントで利用できる?
クエリビルダーを使用して、視覚的にブループリントを構築する
Liferay UIでJSONを使用してブループリントを構成する
ブループリントの作成を簡素化するために、デフォルトの要素を活用する
Elasticsearchクエリ をカスタム要素として使用する
Elasticsearchのクエリからカスタム要素を作成する
ブループリントのカスタムJSON要素の作成
JSONを直接編集して詳細なブループリントの設定を作成する
ブループリント適用時に、どのLiferayエンティティを検索可能にするかを選択する
Liferayのインデクサフレームワークからの句と個々のクエリ句のコントリビューターを含めるかどうかを選択する
JSONを使用して、詳細設定(集計、ソート、ハイライトなど)を行うことができる

検索ブループリントUIの機能に加えて、ブループリントを検索ページに適用できるように、検索ウィジェットが拡張されました。

検索リクエストの理解

ブループリントは、Liferay の Elasticsearch への検索リクエストの内容を制御する方法です。 したがって、ユーザーの検索エクスペリエンスがどのように機能するかについての理解と、デフォルトの Liferay 検索クエリの主なコンポーネントに関する高度な理解を組み合わせると役立ちます(ただし、開始するために必須ではありません)。

検索リクエスト: LiferayはElasticsearchに検索リクエストを送ります。これにはクエリボディとElasticsearchが返すレスポンスを指示するための追加パラメータを含めることができます。

クエリ: クエリボディは、一致するコンテンツがインデックスにあるかどうかを判断する方法を検索に指示します。 例えば、 title フィールドを含むインデックス付きコンテンツを検索する場合、どのようなクエリを使用すればよいのでしょうか。 また、 title のフィールドにマッチする場合は、スコアをブーストすべきでしょうか。

句: 句は、メインの bool クエリの自己完結的な部分です。 ほとんどの場合、ネストされたクエリの1つは、 が呼び出しされたときに参照されるものです。

メインのLiferayクエリはbool親クエリで、多数の子クエリをラップします。 主に2つのoccurs句から構成されます。must and filter. ブループリントは、両方の句に影響を与えることができます。 filter句にはフィルタータイプの要素が、クエリタイプの要素には must boolean句の下に句が追加されています。

Liferayの検索機能はすべて最終的にJSONのElasticsearchのクエリに変換されます。 ここでは、検索バーウィジェットに"test"という単語を入力して生成されたクエリのほんの一部をご紹介します。

{
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "bool": {
                  "should": [
                    {
                      "bool": {
                        "must": [
                          {
                            "match": {
                              "comments": {
                                "query": "test"
                              }
                            }
                          }
                        ],
                        "should": [
                          {
                            "match_phrase": {
                              "comments": {
                                "query": "test",
                                "slop": 50
                              }
                            }
                          },
                          {
                            "match_phrase": {
                              "comments": {
                                "query": "test",
                                "boost": 2
                            }

もう少し掘り下げると、次のbooleanクエリは、一致する結果のスコアにコントリビュートする句がある場合、コンテンツフィールドの検索語"test"に対してmatchクエリを満たす必要があることを命令しています。 さらに、コンテンツ フィールドの 一致フレーズ クエリ が一致すると、結果のスコアは 2の値だけ増加します。

{
  "bool": {
    "must": [
      {
        "match": {
          "content": {
            "query": "test"
          }
        }
      }
    ],
    "should": [
      {
        "match_phrase": {
          "content": {
            "query": "test",
            "slop": 50
          }
        }
      },
      {
        "match_phrase": {
          "content": {
            "query": "test",
            "boost": 2
          }
        }
      }
    ]
  }

これらは、要素で追加するタイプの句です。

検索リクエストの部分は、ブループリントUIとその設定オプションにマッピングすることができます。

ブループリントは、Elasticsearchに送信するクエリや設定を設定することができます。

次のステップ