search - Sitecore 索引中的 urllink 返回带有 "/sitecore/shell/~/media/..."的媒体 url

标签 search indexing sitecore media sitecore7

“urllink”是 Sitecore 索引中的 ComputedIndexField。

对媒体项目,如果我重建索引,则存储到索引中的 url 以“/~/media/...”开头,这是正确的。

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

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

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

只是想知道我是否遗漏了什么,这实际上不是 Sitecore 的问题?

谢谢!

最佳答案

只是为了提供更新。 Sitecore 确认这是一个错误。他们正在寻找解决方法,他们这样做时我会在这里更新。

谢谢。

-------------更新于 15/12/2014--------------

票已经关了。 Sitecore 的解决方案是将来从索引中删除这个“urlLink”字段(他们说他们会要求这样做)。

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

当然还有另一种解决方案是创建您自己的 computeredField 来覆盖媒体项的逻辑。不过我同意 Sitecore,从索引中删除这个字段感觉更合适。

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

暂时就这么多了,欢迎大家多多交流讨论,谢谢!

关于search - Sitecore 索引中的 urllink 返回带有 "/sitecore/shell/~/media/..."的媒体 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27272832/

相关文章:

android - 仅应用程序身份验证 twitter api android

r - 如何使用 [row,col] 距离索引对特定列进行行求和循环

indexing - Sitecore Lucene 索引 - 按模板排除项目

mysql - 如何在没有全文索引的情况下在两个 mysql 表中搜索字符串

javascript - 如何在输入点击时触发搜索按钮?

python - 在python的List中通过其成员查找对象

mysql - 日志表的数据库索引

matlab - 如何访问具有 n 个索引向量的 n 维矩阵?

c# - Glass Mapper Sitecore 上下文单元测试

Sitecore 错误 : AddFromTemplate - Add access required