如何将超过3400字节的文本插入Tridion代理中的字段?

Geo*_*rge 7 tridion tridion-content-delivery tridion-2011

我有一个包含大量元数据字段的模式.我们希望能够通过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());
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,此工作正常:用户可以键入一些搜索文本,我们通过代理API将搜索文本传递给Tridion,Tridion会将返回与搜索文本匹配的组件.

但!如果我在任何组件的内容字段中添加了大量文本,则Tridion发布过程将在"部署"阶段失败:

阶段:部署处理阶段失败,无法部署组件[Component id = tcm:9-2617-16 title = xyz schema = tcm:9-2325-8],CustomMeta字段,StringValue,大于支持的3400字节大小!

我尝试将代理数据库的CUSTOM_META表中的KEY_STRING_VALUE列从nvarchar(3400)更改为nvarchar(MAX),但这似乎没有解决问题.

我完全没有超出限制:"wc"告诉我文本中有4037个字节.大约6000左右听起来像是我需要的舒适上限.

是否有一种简单的方法来增加此字段中允许的文本字节数?

Dan*_*agu 10

没有任何支持的方式来完成你想要完成的任务.另外,请记住自定义元的实际目的是什么.在我看来,你通过在专栏中添加大量内容来滥用它.

无论如何,如果你真的想走这条路,那么你需要联系Tridion支持或访问sdltridionworld(需要登录)并下载CD_2011.1.1.83467(或任何包含CD_2011.1.1.81125的修补程序,CD_2011.1.1.83475除外) !).修补程序更改的内容是删除对部署时完成的元数据大小的硬性检查.换句话说,它允许您通过让数据库服务器决定是否允许您在该列中存储那么多内容来拍摄自己.请注意,Tridion 支持更改数据库列.

希望这可以帮助.


Dav*_*ter 5

支持更改代理数据库中列的定义,并且可能会在将来导致实施的支持和升级问题.

听起来像你正在做你的组件的文本内容,并把它变成一个基于文本的元数据字段,以提供某种形式的全文搜索功能在您的前端(原谅我,如果我错了).这不一定符合Content Delivery API的预期目的.

我建议您先前提出有关实施自由文本搜索的问题,以及我的回答