2016-10-02 57 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; } –