智慧翻譯搜尋可讓您使用非英文的搜尋辭彙來解析為英文內容。 若要設定AEM以進行智慧型翻譯搜尋,必須安裝並設定Apache Oak Search Machine Translation OSGi套件組合,以及包含翻譯規則的相關免費開放原始碼Apache Joshua語言套件。
必須在需要的智慧型翻譯例項上設定智慧型翻譯搜尋。
下載及安裝Oak Search機器翻譯OSGi套件組合
/system/console/bundles
將下載的Oak Search機器轉譯OSGi套件組合安裝至AEM。下載和更新Apache Joshua語言套件
下載並解壓縮所需的Apache Joshua語言套件。
編輯joshua.config
檔案並注釋掉以下開頭的2行:
feature-function = LanguageModel ...
確定並記錄語言包的模型資料夾的大小,因為這會影響AEM需要多少額外的堆空間。
將解壓縮的Apache Joshua語言包資料夾(連同joshua.config
編輯內容)移至
.../crx-quickstart/opt/<source_language-target_language>
例如:
.../crx-quickstart/opt/es-en
使用更新的堆記憶體分配重新啟動AEM
停止AEM
確定AEM的新所需堆大小
AEM前置語言 — 缺少堆大小+模型目錄的大小捨入到最接近的2GB
例如:如果預先語言包安裝AEM需要8GB的堆才能運行,並且語言包的模型資料夾未壓縮為3.8GB,則新堆大小為:
原始的8GB
+(3.75GB
捨入到最接近的2GB
,即4GB
),總計為12GB
驗證電腦是否具有此數量的額外可用記憶體。
更新AEM啟動指令碼以根據新堆大小進行調整
java -Xmx12g -jar cq-author-p4502.jar
以增加的堆大小重新啟動AEM。
語言包所需的堆空間可能會增大,尤其是當使用多語言包時。
請始終確保實例有足夠的記憶體以適應已分配堆空間的增加。
必須始終計算基本堆以支援可接受的效能,而不安裝任何語言包。
透過Apache Jackrabbit Oak Machine Translation全文查詢詞提供者OSGi設定註冊語言套件
對於每個語言套件, 透過AEM Web主控台的「設定管理員」,建立新的Apache Jackrabbit Oak Machine Translation全文查詢詞提供者OSGi設定。
Joshua Config Path
是joshua.config檔案的絕對路徑。AEM程式必須能夠讀取語言包資料夾中的所有檔案。
Node types
是候選節點類型,其全文搜索將使此語言包參與翻譯。
Minimum score
是要使用的翻譯詞語的最低信賴分數。
0.9
的英文單詞"man",也可翻譯成信賴分數為0.2
的英文單詞"human"。 將最小分數調整為0.3
,將保留「hombre」到「man」的翻譯,但將「hombre」轉換為「human」,因為此0.2
的翻譯分數小於0.3
的最小分數。對資產執行全文搜尋
更新語言套件
Apache Joshua語言包由Apache Joshua項目全部維護,其更新或更正是Apache Joshua項目的酌處權。
如果語言包已更新,為了在AEM中安裝更新,必須執行上述步驟2 - 4,根據需要向上或向下調整堆大小。
如果AEM不需要重新啟動,則與更新語言包相關的相關Apache Jackrabbit Oak Machien翻譯全文查詢詞提供者OSGi設定必須重新儲存,以便AEM處理更新的檔案。
為了讓AEM智慧標籤受到AEM智慧轉譯的影響,必須更新AEM /oak :index /damAssetLucene
索引,以將預計標籤(「智慧標籤」的系統名稱)標示為資產匯總Lucene索引的一部分。
在/oak:index/damAssetLucene/indexRules/dam:Asset/properties/predicatedTags
下,確保配置如下:
<damAssetLucene jcr:primaryType="oak:QueryIndexDefinition">
<indexRules jcr:primaryType="nt:unstructured">
<dam:Asset jcr:primaryType="nt:unstructured">
<properties jcr:primaryType="nt:unstructured">
...
<predictedTags
jcr:primaryType="nt:unstructured"
isRegexp="{Boolean}true"
name="jcr:content/metadata/predictedTags/*/name"
useInSpellheck="{Boolean}true"
useInSuggest="{Boolean}true"
analyzed="{Boolean}true"
nodeScopeIndex="{Boolean}true"/>