Documentation

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

検索ブループリントは、Search Experiencesツールセットの最初の機能です。 ブループリントを使用すると、カスタムコードをデプロイすることなく、ユーザーのニーズに合わせて検索ページのエクスペリエンスを調整できます。 ブループリントを使用すると、以下のことが可能になります。

  • 文脈を考慮した検索ページを作成する。 例えば、Webコンテンツの記事を検索ユーザーとの近接性でブーストします。

  • どのフィールドを検索するかを明示的に宣言します。 例えば、 userName フィールドを宣言しないようにすることが可能です。

  • 特定のカテゴリーを持つアセットを一定期間ブーストする。 例えば、Liferay Commerceの製品をカテゴリー別に宣伝する季節のキャンペーンを作成します。

  • [カスタムフィルター] ウィジェット が提供するあらゆるユースケースは、ブループリントで満たすことができます。 例えば、検索されたキーワードにマッチする特定のフィールドをブーストします。

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

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

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

ブループリントとは?

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

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

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

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

詳しくは、 Creating and Managing Blueprints および Planning a Blueprintをご覧ください。

ブループリントの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クエリを満たす必要があることを命令しています。 また、コンテンツフィールド上の match phrase query にマッチした場合、結果のスコアは 2という値でブーストされます .

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

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

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

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

次のステップ?

  • 検索ブループリントの作成と管理