gpt4 book ai didi

c# - 使用 Lucene 提高 Sitecore 的性能

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:14 24 4
gpt4 key购买 nike

我目前在使用 Sitecore,在那里我们创建了一个创建新内容部分,它会打开一个弹出窗口,显示 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>

再次感谢!

最佳答案

首先,永远不要迭代或检索整个内容树并期望它执行。这不是一个合理的期望。

您可能会在 lucene 中执行此操作,但它需要索引模板本身并添加一个包含模板实例计数的字段。 (查看 scSearchContrib 可以使这更容易。)但是您需要计划完全重建此索引,因为除非模板项本身发生更改,否则永远不会重新编制索引。

Links DB 可能会让您获得更好的性能,因为那里应该包含对模板的引用。但是,您仍然需要遍历所有模板,并检查对每个模板的引用数。

无论使用哪种解决方案,我绝对仍然建议实现缓存层。

但最后,为什么有必要动态执行此操作?您安装的八个最常用或最有用的模板会经常更改吗?为什么不为此在内容树中的某处创建一个配置元素,并根据模板使用报告定期更新它?你可以使用类似 Sitecore Powershell Console 的东西运行报告。如果您确实需要将其自动化,请编写一个执行查询的 Sitecore Powershell 脚本,然后自动更新您的配置元素。安排脚本每天运行。

关于c# - 使用 Lucene 提高 Sitecore 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com