7

多くのメタデータ フィールドを持つスキーマがあります。以下のように、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 フィールド、StringValue が、サポートされているサイズの 3400 バイトを超えています!

ブローカー データベースの CUSTOM_META テーブルの KEY_STRING_VALUE 列を nvarchar(3400) から nvarchar(MAX) に変更しようとしましたが、問題が解決していないようです。

制限をまったく超えていません。「wc」は、テキストに 4037 バイトがあることを示しています。約 6000 程度が、私のニーズにとって快適な上限のように思えます。

このフィールドに入力できるテキストのバイト数を増やす簡単な方法はありますか?

4

2 に答える 2

5

ブローカー データベースの列の定義を変更することはサポートされていないため、将来の実装でサポートとアップグレードの問題が発生する可能性があります。

コンポーネントのテキスト コンテンツを取得し、それをテキスト ベースのメタデータ フィールドに配置して、フロント エンドである種の全文検索機能を提供しているようです (間違っていたらすみません) これは、Content Delivery API の本来の目的に必ずしも適合するとは限りません。

フリーテキスト検索の実装に関する以前の質問と私の回答を参照してください。

于 2013-02-12T09:47:12.397 に答える