搜尋Essentials search-essentials
概觀 overview
搜尋功能是Adobe Experience Manager (AEM) Communities的重要功能。 除了AEM平台搜尋功能外,AEM Communities還提供用於搜尋使用者產生的內容(UGC)的UGC搜尋API。 UGC在輸入和儲存時,與其他AEM內容和使用者資料分開,因此有獨特的屬性。
針對Communities,通常會搜尋以下兩個專案:
-
社群成員張貼的內容
- 它使用AEM Communities的UGC搜尋API。
-
使用者和使用者群組(使用者資料)
- 它使用AEM平台搜尋功能。
建立自訂元件以建立或管理UGC的開發人員,可能會對說明檔案的此區段感興趣。
安全性與陰影節點 security-and-shadow-nodes
自訂元件必須使用SocialResourceUtilities方法。 建立和搜尋UGC的公用程式方法會建立必要的陰影節點,並確定成員擁有要求的正確許可權。
不透過SRP公用程式管理的內容為與仲裁相關的屬性。
請參閱SRP和UGC Essentials,以取得有關用於存取UGC和ACL陰影節點的公用程式方法的資訊。
UGC搜尋API ugc-search-api
UGC公用存放區是由不同的存放裝置資源提供者(SRP)之一所提供,每個提供者可能都有不同的原生查詢語言。 因此,無論選取的SRP為何,自訂程式碼都應該使用UGC API套件 (com.adobe.cq.social.ugc.api)中的方法,它會叫用適合所選SRP的查詢語言。
ASRP搜尋 asrp-searches
對於ASRP,UGC儲存在Adobe雲端。 雖然UGC在CRX中不可見,但調節可在作者和Publish環境中使用。 UGC搜尋API的使用在ASRP上的作用與其他SRP相同。
目前沒有管理ASRP搜尋的工具。
建立可搜尋的自訂屬性時,必須遵守命名需求。
MSRP搜尋 msrp-searches
針對MSRP,UGC儲存在設定為使用Solr進行搜尋的MongoDB中。 UGC在CRX中不可見,但調節可在作者和Publish環境中使用。
關於MSRP和Solr:
- AEM平台的內嵌Solr不用於MSRP。
- 如果針對AEM平台使用遠端Solr,則可與MSRP共用,但應使用不同的集合。
- Solr可設定為標準搜尋或多語言搜尋(MLS)。
- 如需組態詳細資訊,請參閱MSRP的Solr組態。
自訂搜尋功能應該使用UGC搜尋API。
建立可搜尋的自訂屬性時,必須遵守命名需求。
JSRP搜尋 jsrp-searches
對於JSRP,UGC儲存在Oak中,並且只會在輸入它的AEM Author或Publish執行個體的存放庫中顯示。
由於UGC通常是在Publish環境中輸入,因此對於多發佈者生產系統,必須設定發佈叢集,而不是發佈陣列,以便所有發佈者都能看到輸入的內容。
若為JSRP,在Publish環境中輸入的UGC絕對不會顯示在製作環境中。 因此,所有稽核工作都會在Publish環境中進行。
自訂搜尋功能應該使用UGC搜尋API。
Oak索引 oak-indexing
雖然自AEM 6.2起,AEM平台搜尋不會自動建立Oak索引,但已為AEM Communities新增索引,以改進效能並在顯示UGC搜尋結果時支援分頁。
如果使用自訂屬性且搜尋速度緩慢,則必須為自訂屬性建立其他索引,以提高其效能。 若要維持可攜性,在建立可搜尋的自訂屬性時,請遵守命名需求。
若要修改現有索引或建立自訂索引,請參閱Oak查詢與索引。
Oak索引管理員可從ACS AEM Commons取得。 它提供:
- 現有索引的檢視。
- 啟動重新索引的功能。
若要檢視CRXDE Lite中的現有Oak索引,位置為:
/oak:index/socialLucene
索引搜尋屬性 indexed-search-properties
預設搜尋屬性 default-search-properties
以下是供各種Communities功能使用的一些可搜尋屬性:
命名自訂屬性 naming-of-custom-properties
新增自訂屬性時,若要讓以UGC搜尋API建立的排序和搜尋看見這些屬性,需要 在屬性名稱中新增尾碼。
尾碼適用於使用結構的查詢語言:
- 它會將屬性識別為可搜尋。
- 它可識別資料型別。
Solr是使用結構描述的查詢語言範例。
附註:
-
Text 是代碼化字串,String 不是。 使用 文字 進行模糊(類似這樣)搜尋。
-
對於多值型別,請在尾碼中新增's',例如:
viewDate_dt
:單一日期屬性viewDates_dts
:日期屬性清單
篩選條件 filters
包含註解系統的元件除了其端點之外,也支援篩選引數。
AND和OR邏輯的篩選器語法如下(在URL編碼之前顯示):
-
若要指定OR或使用帶有逗號分隔值的篩選器引數:
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。
篩選器運運算元包括:
重要的是,URL應參考Communities元件(資源),而非該元件所在的頁面:
- 正確:論壇元件
/content/community-components/en/forum/jcr:content/content/forum.social.json
- 不正確:論壇頁面
/content/community-components/en/forum.social.json
SRP工具 srp-tools
有一個Adobe Experience Cloud GitHub專案,其中包含:
此存放庫包含用於管理SRP中資料的工具。
目前有一個servlet可從任何SRP刪除所有UGC。
例如,若要刪除ASRP中的所有UGC:
curl -X POST http://localhost:4502/services/social/srp/cleanup?path=/content/usergenerated/asi/cloud -uadmin:admin
疑難排解 troubleshooting
Solr查詢 solr-query
若要協助疑難排解Solr查詢的問題,請為啟用DEBUG記錄
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管理查詢工具,以便進一步偵錯。
相關資源 related-resources
- 社群內容存放區 — 討論UGC公用存放區可用的可用的SRP選擇。
- 儲存資源提供者概觀 — 簡介和存放庫使用概觀。
- 使用SRP存取UGC — 編碼准則。
- SocialUtils重構 — 取代SocialUtils的SRP公用程式方法。
- 搜尋和搜尋結果元件 — 正在新增UGC搜尋功能至範本。