検索ブループリントの理解
検索ブループリントは、Search Experiencesツールセットの最初の機能です。 ブループリントを使用すると、カスタムコードをデプロイすることなく、ユーザーのニーズに合わせて検索ページのエクスペリエンスを調整できます。 ブループリントを使用すると、以下のことが可能になります。
- 文脈を考慮した検索ページを作成します。 例えば、Webコンテンツの記事を検索ユーザーとの近接性でブーストします。
- どのフィールドを検索するかを明示的に宣言します。 例えば、
userName
フィールドを宣言しないようにすることが可能です。 - 特定のカテゴリーを持つアセットを一定期間ブーストします。 例えば、Liferay Commerceの製品をカテゴリー別に宣伝する季節のキャンペーンを作成します。
- [カスタムフィルター] ウィジェット が提供するあらゆるユースケースは、ブループリントで満たすことができます。 例えば、検索されたキーワードにマッチする特定のフィールドをブーストします。
検索対象や検索方法を制御する必要がある場合、検索ブループリントは必要な機能です。
Liferayのデフォルトの検索エクスペリエンスの構成機能は、時間の経過とともに進化しています。 最新のLiferay DXPリリースでは、すぐに検索結果のチューニング( 同義語セット and 結果ランキング )、 Custom Facetsの追加、 Custom Filters を使用して複雑な検索カスタマイズを実行できます。 しかし、これらの構成には限界があり、検索を多用するサイトの多くでは、検索インフラのバックエンドコードのカスタマイズが必要です。 これには、JavaベースのモジュールをLiferayのOSGiランタイムにデプロイする必要があります。
ブループリントは、このようなコードを多用する機能セットではなく、カスタムコードを展開せずに検索ページのクエリをほぼ完全に制御する必要があるユーザー向けに、別のアプローチを採用しています。 ブループリントは、ほとんどすべてのユースケースを満たすことができるUIベースの設定エクスペリエンスを提供します(機能の初期のイテレーションでなくても、機能セットがさらに強固になった後続バージョンで)。
ブループリントとは
簡単に言うと、ブループリントはエレメントで構成され、その上にいくつかの追加設定が施されています。
ブループリント : 検索ブループリントはLiferayの検索動作の設計計画書です。 検索体験は、ほとんどのユーザーにとって、 検索バー から始まります。 検索語が入力されると、Liferayの検索インフラストラクチャによって複雑なクエリが構築され、検索エンジンに送信されます。 検索インサイト ウィジェットを使って、Liferayの完全なクエリを見ることができます。 このクエリはLiferayの検索ページのデフォルトのブループリントと考えることができ、何がどのように検索されるかを制御します。
要素 : 要素は、ブループリント全体を構築するために組み合わされる視覚的な構成要素です。 各要素は、具体的な検索動作を定義するJSONフラグメントによって裏付けられています。 エレメントは、Search Experiencesと一緒に提供され、要素エディターにより、独自の要素を作成したり、既存の要素を複製して、独自のニーズの開始点として使用することができます。
ブループリントを作成するには、まず、想定しているユースケースから始めます。 デフォルトの検索ページのエクスペリエンスについて、何を変更する必要がありますか? 次に、提供された要素を見て、カスタマイズの構築を開始できるかどうかを確認します。 ブループリントを企画したら、次はそれを作成します。
詳細は、検索ブループリントの作成と管理を参照してください。
ブループリントのUIでできること
ブループリントを使用して検索ソリューションを作成するには、要素をブループリントに合成し、ページに適用します。 そのために用意されている機能は以下の通りです。
機能 | ブループリントで利用できる? |
---|---|
クエリビルダーを使用して、視覚的にブループリントを構築する | ✔ |
Liferay UIでJSONを使用してブループリントを構成する | ✔ |
ブループリントの作成を簡素化するために、デフォルトの要素を活用する | ✔ |
Elasticsearchクエリ をカスタム要素として使用する | ✔ |
Elasticsearchのクエリからカスタム要素を作成する | ✔ |
ブループリントのカスタムJSON要素の作成 | ✔ |
JSONを直接編集して詳細なブループリントの設定を作成する | ✔ |
ブループリント適用時に、どのLiferayエンティティを検索可能にするかを選択する | ✔ |
Liferayのインデクサフレームワークからの句と個々のクエリ句のコントリビューターを含めるかどうかを選択する | ✔ |
JSONを使用して、詳細設定(集計、ソート、ハイライトなど)を行うことができる | ✔ |
検索ブループリントUIの機能に加えて、ブループリントを検索ページに適用できるように、検索ウィジェットが拡張されました。
検索リクエストの理解
Blueprintsは、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とその設定オプションにマッピングすることができます。
次のステップ
- 検索ブループリントの作成と管理