智能翻译搜索允许使用非英语搜索词解析为英语内容。 要为Smart Translation Search设置AEM,必须安装和配置Apache Oak Search Machine Translation OSGi捆绑包,以及包含翻译规则的相关免费和开源Apache Joshua语言包。
必须在每个需要智能翻译搜索的AEM实例上设置智能翻译搜索。
下载并安装Oak搜索机器翻译OSGi包
/system/console/bundles
.下载并更新Apache Joshua语言包
下载并解压缩所需的 Apache Joshua语言包.
编辑 joshua.config
并注释掉以下列开头的两行:
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机器翻译全文查询条款提供商OSGi配置注册语言包
对于每个语言包, 创建新的Apache Jackrabbit Oak机器翻译全文查询词提供程序OSGi配置 通过AEM Web控制台的配置管理器。
Joshua Config Path
是joshua.config文件的绝对路径。 AEM进程必须能够读取语言包文件夹中的所有文件。
Node types
是全文搜索将涉及此语言包进行翻译的候选节点类型。
Minimum score
是要使用的翻译术语的最小置信度分数。
0.9
翻译成human这个英文单词,并加上一个置信度分数 0.2
. 将最小分数调整为 0.3
,会保留“hombre”到“man”的翻译,但将“hombre”到“human”的翻译放弃,因为此翻译分数为 0.2
小于的最小得分 0.3
.对资产执行全文搜索
更新语言包
Apache Joshua语言包完全由Apache Joshua项目维护,其更新或更正由Apache Joshua项目自行决定。
如果更新了语言包,则为了在AEM中安装更新,必须执行上述步骤2 - 4,并根据需要调整栈大小。
如果AEM不需要重新启动,则必须重新保存与更新的语言包相关的相关Apache Jackrabbit Oak机器翻译全文查询词提供程序OSGi配置,以便AEM处理更新的文件。
为了 AEM智能标记 将受AEM Smart Translation、AEM的影响 /oak :index /damAssetLucene
必须更新索引以将predictedTags(“智能标记”的系统名称)标记为该资产的聚合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"/>