検索機能は AEM Communities の基本機能です。AEM platform search機能に加えて、AEM Communitiesはユーザ生成コンテンツ(UGC)を検索する目的でUGC search APIを提供しています。 UGCには、他のAEMコンテンツやユーザーデータとは別に入力および保存されるので、固有のプロパティがあります。
Communitiesでは、一般に検索される2つの項目は次のとおりです。
コミュニティメンバーが投稿したコンテンツ
ユーザーとユーザーグループ(ユーザーデータ)
ドキュメントのこの節は、UGC を作成または管理するためのカスタムコンポーネントの作成を担当する開発者を対象としています。
カスタムコンポーネントの場合は、SocialResourceUtilitiesメソッドを使用する必要があります。 UGCを作成および検索するユーティリティメソッドは、必要なシャドウノードを確立し、メンバーに要求に対する正しい権限があることを確認します。
モデレート関連のプロパティについては、SRP ユーティリティでは管理しません。
UGCおよびACLシャドウノードへのアクセスに使用するユーティリティメソッドの詳細については、SRPとUGC Essentialsを参照してください。
UGC 共通ストアは、それぞれ異なるネイティブクエリー言語を使用する様々なストレージリソースプロバイダー(SRP)の 1 社から提供されます。したがって、選択したSRPに関係なく、カスタムコードはUGC APIパッケージ(com.adobe.cq.sosical.ugc.api)からのメソッドを使用し、選択したSRPに適したクエリ言語を呼び出す必要があります。
ASRPの場合、UGCはAdobeクラウドに保存されます。 UGCはCRXに表示されませんが、モデレートは作成者と発行の両方の環境から利用できます。 UGC検索APIの使用は、ASRPでは他のSRPと同じように機能します。
ASRP 検索を管理するためのツールは現在存在しません。
検索可能なカスタムプロパティを作成する場合は、命名規則に従う必要があります。
MSRPの場合、UGCはSolrを使用して検索するように設定されたMongoDBに保存されます。 UGCはCRXには表示されませんが、モデレートは作成者と発行の両方の環境から利用できます。
MSRP および Solr については、次の点に留意してください。
カスタム検索機能では、UGC検索APIを使用する必要があります。
検索可能なカスタムプロパティを作成する場合は、命名規則に従う必要があります。
JSRPの場合、UGCはOakに保存され、入力されたAEM作成者インスタンスまたは発行インスタンスのリポジトリにのみ表示されます。
UGC は一般にパブリッシュ環境で入力されるので、複数の公開者が存在する実稼動システムでは、パブリッシュファームではなく、パブリッシュクラスターの設定を通して、入力されたコンテンツがすべての公開者から表示できるようにする必要があります。
JSRP の場合、パブリッシュ環境で入力された UGC はオーサー環境には表示されません。したがって、すべてのモデレートタスクは発行環境で行われます。
カスタム検索機能では、UGC検索APIを使用する必要があります。
AEM プラットフォーム検索用に Oak インデックスが自動的に作成されることはありませんが、AEM 6.2 以降では、AEM Communities のパフォーマンスを向上させ、UGC 検索結果を表示する際のページネーションに対応する目的で、インデックスが追加されています。
カスタムプロパティを使用していて、検索速度が遅い場合は、カスタムプロパティに対して追加のインデックスを作成し、パフォーマンスを向上させる必要があります。携帯性を維持するために、検索可能なカスタムプロパティを作成する際は、命名規則に従ってください。
既存のインデックスを変更したり、カスタムインデックスを作成する方法については、Oakクエリとインデックスを参照してください。
Oak Index Managerは、ACS AEM Commonsから入手できます。 次の機能が提供されます。
CRXDE Lite で既存の Oak インデックスを表示するには、次の場所に移動します。
/oak:index/socialLucene
様々なコミュニティ機能に使用される検索可能なプロパティの一部を次に示します。
プロパティ | データタイプ |
---|---|
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
次のものをまとめた Adobe Marketing Cloud GitHub プロジェクトが公開されています。
このリポジトリには、SRP のデータを管理するためのツールが格納されています。
現在、任意の SRP からすべての UGC を削除できるサーブレットが 1 つ用意されています。
次に、ASRP からすべての UGC を削除する場合の例を示します。
curl -X POST http://localhost:4502/services/social/srp/cleanup?path=/content/usergenerated/asi/cloud -uadmin:admin
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管理者クエリツールに渡して、さらに詳細なデバッグを行うことができます。