Sitecore索引中的urllink返回带有“/ sitecore / shell /〜/ media / ...”的媒体网址

时间:2014-12-03 13:22:16

标签: search indexing sitecore media sitecore7

“urllink”是Sitecore索引中的ComputedIndexField。

敌人的媒体项目,如果我重建索引,存储到索引中的网址以“/〜/ media / ...”开头,这是正确的。

但是如果索引策略是onPublishEndSync,并且我在我的媒体项目上重新发布,则网址以“/ sitecore / shell /〜/ media /...”开始。

我查了Sitecore源代码,区别在于Context.Site。重建索引时它为null,因此它使用“/”作为前缀。但在发布时它是“Sitecore shell”。因此它使用Sitecore Shell的Context.Site.VirtualFolder,即“/ sitecore / shell”。

我认为这是一个Sitecore错误。 ATM我想创建自己的urlLink ComputedIndexField类,并使用AbsolutePath = false的MediaUrlOptions作为修复。

只是想知道我是否遗漏了任何东西而且它实际上不是Sitecore的问题?

谢谢!

1 个答案:

答案 0 :(得分:4)

只是为此提供更新。 Sitecore确认它是一个错误。他们正在找到一种解决方法,我会在这里更新。

感谢。

------------- 2014年12月15日更新----------------------

现在门票关闭了。 Sitecore的解决方案是删除这个" urlLink"未来的指数领域(他们说他们会要求这个)。

原因是LinkManager应该根据当前站点上下文生成url。但是,索引时站点上下文不存在(对于内容项,您可以检查路径,但对于媒体项,您不能)。

当然,另一种解决方案是创建自己的computeredField以覆盖媒体项的逻辑。但是,我同意Sitecore,从索引中删除此字段感觉更为正确。

最重要的是,使用urlLink字段的最初原因是在执行搜索时不再需要完全查询Sitecore。所有内容都来自Index的存储字段值。但另一方面,分页通常用于搜索结果,因此即使有对Sitecore的请求,它也不应该很多。

现在一切都好,很高兴看到更多意见和讨论,谢谢!