2016-10-02 31 views
3

如何从Sitecore Lucene搜索获取格式化的网址?我创建了一个自定义索引,并在根目录下将其更新为/ sitecore/content/websitename/home。Sitecore搜索Api - 如何获得格式化的网址

当检索到搜索结果时,URL会附加https://hostname/websitename/home/sample.aspx。我想要的网址是https://hostname/sample.aspx。索引配置中是否有需要更新的设置?

在sites.config我已经有ROOTPATH = “/ Sitecore的/内容/ websitename” 起始物品= “/家”

回答

2

你可以在两种方式的网址:

  1. 对于每个结果您的索引,获取该项目,并得到与您通常会为任何项目的LinkManager的网址。这确实意味着你需要获取这些项目会有什么性能问题。
  2. 在索引中创建一个计算字段以包含url。在您的计算字段中,确保正在生成正确的链接。如果没有,你可能需要检查你的url选项,也许Rendering.SiteResolving设置(true)。用调试器验证结果(或用Luke测试索引)。请记住,如果您将URL包含在索引中,则在重命名项目时甚至需要更新其他项目(或者甚至在URL中使用该项目时更改了显示名称)。那个变化的项目的所有孩子都在那个时候改变了他们的网址。
+0

感谢您的提示,我带着第二个选项。不过,我仍然需要获取上下文网站。这是我已经实现(如果任何人需要):Item item =可索引为SitecoreIndexableItem; (item!= null) var options = LinkManager.GetDefaultUrlOptions(); options.Site = SiteContext.GetSite(“website”); return“https”+ LinkManager.GetItemUrl(item,options); } – Vamshi

+1

请勿使用url模式进行硬编码。使用方法获取当前模式:public static string GetScheme() { HttpContext current = HttpContext.Current; if(current!= null) return current.Request.Url.Scheme; return string.Empty; } –