我有一个包含大量元数据字段的模式。我们希望能够通过Tridion API从代理中搜索基于该模式的组件,如:
using Tridion.ContentDelivery.DynamicContent.Query;
private static Criteria getSearchCriteria(
string searchText,
params BrokerConstants.MetadataField[] fields)
var searchCriteria = new List<Criteria>();
foreach (var f in fields)
{
var mkcText = new CustomMetaKeyCriteria(f.Name);
var mvcText = new CustomMetaValueCriteria(
mkcText,
"%" + searchText + "%",
Criteria.Like);
searchCriteria.Add(mvcText);
}
return new OrCriteria(searchCriteria.ToArray());
}
到目前为止,此工作正常:用户可以输入一些搜索文本,我们通过代理API将搜索文本传递给Tridion,Tridion会将返回与搜索文本匹配的组件返回给我们。
但是!如果我在任何组件的内容字段中添加了大量文本,则Tridion发布过程将在“部署”阶段失败:
阶段:部署处理阶段失败,无法部署组件 [Component id = tcm:9-2617-16 title = xyz schema = tcm:9-2325-8],CustomMeta field,StringValue,大于支持的3400字节大小!
我尝试将代理数据库的CUSTOM_META表中的KEY_STRING_VALUE列从nvarchar(3400)更改为nvarchar(MAX),但这似乎没有解决问题。
我没有超过极限:“wc”告诉我文本中有4037个字节。大约6000左右的声音听起来像是我需要的舒适上限。
是否有一种简单的方法可以增加此字段中允许的文本字节数?
答案 0 :(得分:10)
没有支持的方式来完成你想要完成的任务。另外,请记住自定义元的实际目的是什么。在我看来,你通过在专栏中添加大量内容来滥用它。
无论如何,如果你真的想走这条路,那么你需要联系Tridion支持或访问sdltridionworld(需要登录)并下载CD_2011.1.1.83467(或任何包含CD_2011.1.1.81125的修补程序)除了CD_2011.1.1.83475 !!!)。修补程序更改的内容是删除对部署时完成的元数据大小的硬性检查。换句话说,它允许您通过让数据库服务器决定是否允许您在该列中存储那么多内容来拍摄自己。请注意,Tridion支持更改数据库列 。
希望这会有所帮助。
答案 1 :(得分:5)