検索の基本事項

概要

検索機能は AEM Communities の基本機能です。AEM platform search機能に加えて、AEM Communitiesはユーザ生成コンテンツ(UGC)を検索する目的でUGC search APIを提供しています。 UGCには、他のAEMコンテンツやユーザーデータとは別に入力および保存されるので、固有のプロパティがあります。

Communitiesでは、一般に検索される2つの項目は次のとおりです。

  • コミュニティメンバーが投稿したコンテンツ

    • AEM CommunitiesのUGC検索APIを使用
  • ユーザーとユーザーグループ(ユーザーデータ)

    • AEMプラットフォーム検索機能を使用

ドキュメントのこの節は、UGC を作成または管理するためのカスタムコンポーネントの作成を担当する開発者を対象としています。

セキュリティおよびシャドウノード

カスタムコンポーネントの場合は、SocialResourceUtilitiesメソッドを使用する必要があります。 UGCを作成および検索するユーティリティメソッドは、必要なシャドウノードを確立し、メンバーに要求に対する正しい権限があることを確認します。

モデレート関連のプロパティについては、SRP ユーティリティでは管理しません。

UGCおよびACLシャドウノードへのアクセスに使用するユーティリティメソッドの詳細については、SRPとUGC Essentialsを参照してください。

UGC Search API

UGC 共通ストアは、それぞれ異なるネイティブクエリー言語を使用する様々なストレージリソースプロバイダー(SRP)の 1 社から提供されます。したがって、選択したSRPに関係なく、カスタムコードはUGC APIパッケージ(com.adobe.cq.sosical.ugc.api)からのメソッドを使用し、選択したSRPに適したクエリ言語を呼び出す必要があります。

ASRP 検索

ASRPの場合、UGCはAdobeクラウドに保存されます。 UGCはCRXに表示されませんが、モデレートは作成者と発行の両方の環境から利用できます。 UGC検索APIの使用は、ASRPでは他のSRPと同じように機能します。

ASRP 検索を管理するためのツールは現在存在しません。

検索可能なカスタムプロパティを作成する場合は、命名規則に従う必要があります。

MSRP 検索

MSRPの場合、UGCはSolrを使用して検索するように設定されたMongoDBに保存されます。 UGCはCRXには表示されませんが、モデレートは作成者と発行の両方の環境から利用できます。

MSRP および Solr については、次の点に留意してください。

  • AEMプラットフォーム用の埋め込みSolrは、MSRPには使用されません
  • AEMプラットフォームにリモートSolrを使用する場合、MSRPと共有できますが、異なるコレクションを使用する必要があります
  • Solr は、標準検索用としても、多言語検索(MLS)用としても設定できます。
  • 設定の詳細については、MSRPのSolr設定を参照してください

カスタム検索機能では、UGC検索APIを使用する必要があります。

検索可能なカスタムプロパティを作成する場合は、命名規則に従う必要があります。

JSRP 検索

JSRPの場合、UGCはOakに保存され、入力されたAEM作成者インスタンスまたは発行インスタンスのリポジトリにのみ表示されます。

UGC は一般にパブリッシュ環境で入力されるので、複数の公開者が存在する実稼動システムでは、パブリッシュファームではなく、パブリッシュクラスターの設定を通して、入力されたコンテンツがすべての公開者から表示できるようにする必要があります。

JSRP の場合、パブリッシュ環境で入力された UGC はオーサー環境には表示されません。したがって、すべてのモデレートタスクは発行環境で行われます。

カスタム検索機能では、UGC検索APIを使用する必要があります。

Oak インデックスの作成

AEM プラットフォーム検索用に Oak インデックスが自動的に作成されることはありませんが、AEM 6.2 以降では、AEM Communities のパフォーマンスを向上させ、UGC 検索結果を表示する際のページネーションに対応する目的で、インデックスが追加されています。

カスタムプロパティを使用していて、検索速度が遅い場合は、カスタムプロパティに対して追加のインデックスを作成し、パフォーマンスを向上させる必要があります。携帯性を維持するために、検索可能なカスタムプロパティを作成する際は、命名規則に従ってください。

既存のインデックスを変更したり、カスタムインデックスを作成する方法については、Oakクエリとインデックスを参照してください。

Oak Index Managerは、ACS AEM Commonsから入手できます。 次の機能が提供されます。

  • 既存のインデックスの表示
  • 再インデックスを開始する機能

CRXDE Lite で既存の Oak インデックスを表示するには、次の場所に移動します。

  • /oak:index/socialLucene

chlimage_1-235

インデックス付き検索のプロパティ

デフォルトの検索プロパティ

様々なコミュニティ機能に使用される検索可能なプロパティの一部を次に示します。

プロパティ データタイプ
isFlagged Boolean
isSpam ブール値
読み取り ブール値
influence ブール値
attachments ブール値
sentiment 長整数​**
flagged ブール値
added 日付
modifiedDate 日付
state String
userIdentifier 文字列
replies 長整数​**
jcr:title 文字列
jcr:description 文字列
sling:resourceType 文字列
allowThreadedReply ブール値
isDraft ブール値
publishDate 日付
publishJobId 文字列
answered ブール値
chosenanswered ブール値
tag 文字列
cq:Tag 文字列
author_display_name 文字列
location_t 文字列
parentPath 文字列
parentTitle 文字列​**

カスタムプロパティの命名

カスタムプロパティを追加する場合、UGC検索APIで作成された並べ替えや検索でこれらのプロパティを表示するには、*プロパティ名にサフィックスを追加する必要があります。

サフィックスは、スキーマを使用するクエリ言語用です。

  • プロパティは検索可能であると識別します。
  • データタイプを識別します。

Solr は、スキーマを使用するクエリー言語の一例です。

サフィックス データタイプ
_b ブール値
_dt カレンダー​**
_d 倍精度浮動小数点​**
_tl 長整数​**
_s 文字列
_t テキスト

備考:

  • テキストはトークン化された文字列で、 文字列は含まれません。テキスト​を使用して、あいまい検索を行います(このように)。

  • 複数の値を持つタイプの場合、次のようにサフィックスに「s」を追加します。

    • viewDate_dt:単一の日付プロパティ
    • viewDates_dts:datesプロパティのリスト

フィルター

コメントシステムを含むコンポーネントは、そのエンドポイントにフィルターパラメーターを追加できます。

AND および OR ロジックのフィルター構文は次のようになります(URL エンコード処理前)。

  • OR を指定するには、1 つのフィルターパラメーターを使用し、値をカンマで区切って指定します。

    • filter=name eq 'Jennifer',name eq 'Jen'
  • AND を指定するには、複数のフィルターパラメーターを使用します。

    • filter = name eq 'Jackson'&filter=message eq 'testing'

コミュニティコンポーネントガイドで「検索結果」ページを開く際に使用される URL に見られるように、検索コンポーネントのデフォルト実装ではこの構文が使用されます。テストするには、http://localhost:4503/content/community-components/en/search.htmlを参照します。

フィルター演算子は次のとおりです。

EQ 次と等しい
NE 次と等しくない
LT 次よりも小さい
LTE 次よりも小さいか等しい
GE 次よりも大きい
GTE 次よりも大きいか等しい
LIKE ファジーマッチ

コンポーネントが配置されるページではなく、コミュニティコンポーネント(リソース)を URL で参照することが重要です。

  • 正しい構文:フォーラム要素
    • /content/community-components/en/forum/jcr:content/content/forum.social.json
  • 誤った例:フォーラムページ
    • /content/community-components/en/forum.social.json

SRP ツール

次のものをまとめた Adobe Marketing Cloud GitHub プロジェクトが公開されています。

AEM CommunitiesSRPツール

このリポジトリには、SRP のデータを管理するためのツールが格納されています。

現在、任意の SRP からすべての UGC を削除できるサーブレットが 1 つ用意されています。

次に、ASRP からすべての UGC を削除する場合の例を示します。

curl -X POST http://localhost:4502/services/social/srp/cleanup?path=/content/usergenerated/asi/cloud -uadmin:admin

トラブルシューティング

Solr クエリ

Solrクエリの問題のトラブルシューティングに役立つには、

com.adobe.cq.social.srp.impl.SocialSolrConnector.

実際の Solr クエリが、デバッグログに URL エンコードされて表示されます。

solrへのクエリ:sort=timestamp+desc&bl=en&pl=en&start=0&rows=10 &q=%2Btitle_t:(hello)+%2Bprovider_id:\/content/usergenerated/asi/mongo/content/+%2Bresource_type_s:&df=provider_id&trf=verbatim&fq={!cost%3D100}report_suite:mongo

q パラメーターの値がクエリです。URLエンコーディングがデコードされると、クエリをSolr管理者クエリツールに渡して、さらに詳細なデバッグを行うことができます。

このページ