1

私は現在 Sitecore と連携しており、Create New Content パーツを作成しました。これにより、最も使用されている 8 つのテンプレートと使用回数を示すポップアップが開きます。

問題は、テンプレートの数が多すぎると時間がかかりすぎることです (現在、最も多いテンプレートは 11k を超えています)。

最も使用されている 8 つのテンプレートを取得するために使用しているコードは次のとおりです。

データベースからすべてのアイテムを取得します。

var allItems = db.GetItem("/sitecore/content").Axes.GetDescendants();

そして、最も使用頻度の高い 8 つを取得します。

var mostUsedTemplates = allItems.GroupBy(x => x.TemplateID)
                .Select(x => new { TemplateID = x.Key, Count = x.Count() })
                .OrderByDescending(x => x.Count).Take(8);

Lucene を実装しましたが、使い方がまったくわかりません。

すべてのテンプレートを取得し、それらを数え、最も使用されている 8 つのテンプレートを取得する方法を検索しようとしましたが、何も見つかりませんでした。

つまり、コンテンツ内のアイテムの作成に使用されたすべてのテンプレートを数え、最も多い 8 つのテンプレートを復元する必要があります。

どんな助けでも大歓迎です。ありがとう。

これの拡張: これは私が現在作成している構成です。すべてのテンプレートを含めて、それらを数えられるようにしようとしています。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<search>
  <configuration>
    <indexes>
      <index id="usage_template_count" type="Sitecore.Search.Index, Sitecore.Kernel">
        <param desc="name">$(id)</param>
        <param desc="folder">usage_template_count</param>
        <Analyzer ref="search/analyzer" />
        <locations hint="list:AddCrawler">   

        For what I understand, here is what I specify what to index.
        From what I read, I know how to include some templates, or excludes others, but no idea how to include ALL.
        Also don´t know if I have to set up something in the config to be able to count the results.

        </locations>
      </index>
    </indexes>
  </configuration>
</search>
</sitecore>
</configuration>   

再度、感謝します!

4

1 に答える 1

7

まず第一に、コンテンツ ツリー全体を反復または取得して、それが実行されることを期待しないでください。それは合理的な期待ではありません。

これを lucene で行うこともできますが、テンプレート自体のインデックスを作成し、テンプレートのインスタンス数を含むフィールドを追加する必要があります。(これを簡単にするためにscSearchContribを参照してください。) ただし、テンプレート項目自体が変更されない限り、テンプレート項目は再インデックスされないため、このインデックスの完全な再構築をスケジュールする必要があります。

Links DB にはテンプレートへの参照が含まれている必要があるため、パフォーマンスが大幅に向上する可能性があります。ただし、すべてのテンプレートをループして、それぞれへの参照の数を確認する必要があります。

どちらのソリューションでも、キャッシュ レイヤーを実装することをお勧めします。

結局のところ、なぜこれを動的に行う必要があるのでしょうか? インストールで最も使用されている、または最も有用な 8 つのテンプレートは、それほど頻繁に変更されますか? このためにコンテンツ ツリーのどこかに構成要素を作成し、テンプレートの使用状況のレポートに基づいて定期的に更新しないのはなぜですか? Sitecore Powershell コンソールなどを使用してレポートを実行できます。本当に自動化する必要がある場合は、クエリを実行する Sitecore Powershell スクリプトを作成し、構成要素を自動的に更新します。スクリプトを毎日実行するようにスケジュールします。

于 2013-02-21T15:54:17.987 に答える