Sitecore Search Api — как получить форматированный URL

#search #lucene #sitecore #sitecore8

#Поиск #lucene #sitecore #sitecore8

Вопрос:

Как я могу получить форматированный URL-адрес из Sitecore Lucene search? Я создал пользовательский индекс и обновил его с помощью root как /sitecore/content/websitename/home .

При получении результатов поиска к URL-адресу добавляется https://hostname/websitename/home/sample.aspx . Я бы хотел, чтобы URL-адрес был https://hostname/sample.aspx . Есть ли какие-либо настройки в конфигурации индекса, которые необходимо обновить?

В sites.config у меня уже есть rootPath=»/sitecore/content/websitename» startItem=»/home»

Ответ №1:

Вы можете получить URL-адрес двумя способами:

  1. Для каждого результата из вашего индекса извлеките элемент и получите URL LinkManager -адрес, как обычно, для любого элемента. Это означает, что вам нужно извлекать элементы, которые будут снижать производительность.
  2. Создайте вычисляемое поле в своем индексе, чтобы включить URL. В вашем вычисляемом поле убедитесь, что генерируется правильная ссылка. Если нет, вам может потребоваться проверить параметры вашего URL-адреса и, возможно Rendering.SiteResolving , параметр (true). Проверьте результаты с помощью отладчика (или с помощью Luke для проверки индекса). Помните, что если вы включаете URL-адрес в индекс, вам нужно будет обновлять дополнительные элементы при переименовании элемента (или даже изменении отображаемого имени, когда оно используется в URL). В этот момент все дочерние элементы этого измененного элемента также изменили свои URL-адреса.

Комментарии:

1. Спасибо за подсказку, и я выбрал второй вариант. Однако мне все равно нужно было получить контекстный сайт. Вот что я реализовал (на случай, если кому-то понадобится): Элемент item = индексируемый как SitecoreIndexableItem; if (item != null) { параметры переменной = LinkManager . GetDefaultUrlOptions(); параметры. Site = SiteContext.GetSite(«веб-сайт»); возвращает «https» LinkManager. GetItemUrl(элемент, параметры); }

2. Не вводите жесткий код со схемой url. Используйте метод для получения текущей схемы: общедоступная статическая строка GetScheme() { HttpContext current = HttpContext.Current; если (current != null) возвращает current . Request.Url.Scheme; возвращает строку. Пусто; }