Как настроить отображение результатов поиска BDC?
-
10-12-2019 - |
Вопрос
Я добавил источник контента поиска для своего приложения BDC, и результаты заполняются правильно.Все идет нормально!Однако мне не очень нравится, как отображаются результаты.
Проблема 1:Названия результатов
Заголовком результата всегда является имя файла страницы профиля.Очевидно, что поскольку каждый элемент типа имеет одну и ту же страницу профиля, это бесполезно.Есть ли способ изменить то, что там отображается?В идеале это должна быть комбинация нескольких разных полей элемента, например «Имя + Фамилия».
Используя в качестве примера снимок экрана ниже, я хотел бы изменить ссылку Customer_1.aspx прямо над фрагментом контента.
Проблема 2:Текстовые фрагменты
Есть ли способ заставить результат поиска отображать определенные поля элемента?В этом примере для поиска контактов я, возможно, захочу сразу показать их номер телефона и адрес электронной почты, чтобы избавить пользователя от необходимости переходить по ссылке и ждать загрузки страницы профиля только для того, чтобы получить основную контактную информацию.
Обновлять:Тип результата
Я исследовал это большую часть дня и понял, что мне нужно создать тип результата для моего внешнего типа контента.Получив это, я смогу создавать собственные шаблоны отображения.Я пробовал это много раз, но мне все еще не удается заставить это работать.
Я создал управляемое свойство для одного из столбцов (ненулевое целое число, которое присутствует только в этом типе записи), но не нашел подходящего параметра сопоставления свойств.Какие-либо предложения?
Решение
Решение состоит в том, чтобы создать новый шаблон отображения, включающий поля BCS в качестве управляемых свойств.Вам необходимо добавить управляемые свойства в приложении службы поиска в разделе «Схема поиска», а затем выполнить полный обход.
Скопируйте существующий шаблон отображения, а затем добавьте управляемые свойства и логику рендеринга, чтобы он выглядел так, как вы хотите.
Вы можете следовать этому руководству: http://www.ableblue.com/blog/archive/2013/06/05/introduction-to-sharepoint-2013-display-templates/ Для отладки: http://www.ableblue.com/blog/archive/2014/03/01/create-a-diagnostic-display-template/
Для типа результата у вас есть несколько вариантов, вероятно, самый простой — создать источник результатов.Вы можете создать источник результатов, включающий только сущности из BCS.Результаты будут связаны с ContentType вашей сущности BCS.В моем случае BCSEntity — это «Клиент» (потому что в моей модели BCS есть объект Customer).Таким образом я создаю правило типа результата и применяю его к своему источнику результатов.Похоже, у вас будет что-то вроде ASICustomer.
Другой альтернативой является создание правила типа ASICustomerNumber contains "1,2,3,4,5,6,7,8,9,0"
Другие советы
Решение проблемы 1 (а может и 2 тоже)
Вы должны настроить хост страницы профиля внешнего типа контента, чтобы сделать это, вы можете следовать этому руководствуhttp://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/04/15/how-to-create-a-bcs-profile-page-in-sharepoint-2010.aspx
Я надеюсь, что это может вам помочь.
РЕ:Вопрос OP № 1: «Как вы отображаете управляемое свойство вместо поля заголовка (имя страницы профиля для BDC ECTS) в шаблоне дисплея?» (перефразированный).
Прочитав различные сообщения в блогах Мэтью и Беллы Энген на эту тему, я вижу два возможных решения.Я еще не реализовал ни один из них.
- Изменить
Item_CommonItem_Body.html
чтобы заменить вывод поля «Заголовок».Этот общий шаблон отображения вызывается из вашего шаблона отображения строкой_#=ctx.RenderBody(ctx)=#_
- Вставьте код из
Item_CommonItem_Body.html
в шаблон отображения, заменив строку_#=ctx.RenderBody(ctx)=#_
Для (1) в Item_CommonItem_Body.html
изменить строку var titleHtml = String.format(...);
для вывода желаемого управляемого свойства.Конечно, это влияет на многие шаблоны отображения в центре поиска.Возможно, это не то, чего вы хотите.
Для (2): если у вас есть несколько типов результатов, то есть несколько шаблонов отображения элементов, вам придется встроить код несколько раз.
Ни то, ни другое не является отличным решением.
Обратитесь к блогу Мэтью, начиная с Введение в шаблоны отображения SharePoint 2013 и серия блогов Беллы Как изменить способ отображения результатов поиска в SharePoint Server 2013
РЕ:сокращение вопроса № 1 ОП, я провел дополнительное исследование и нашел, что, вероятно, является предпочтительным решением для 80% случаев.Я оставил свой другой ответ на случай, если подробности будут полезны для остальных 20% случаев.
Напомним: «Как вы отображаете управляемое свойство вместо поля заголовка (имя страницы профиля для BDC ECTS) в шаблоне дисплея?» (перефразированный).
Отвечать:Для сценария BDC/поиска сопоставьте заголовок управляемого свойства со свойством для обхода, соответствующим нужному полю сущности.
- Начните с перехода к приложению службы поиска.
- Открыть схему поиска > Управляемые свойства
- Фильтровать по свойствам, содержащим «Заголовок»
- Отредактируйте свойство «Название»
- Добавьте сопоставление к необходимым свойствам сканирования.
Если вам нужно свойство для обхода для совокупности полей сущности, вместо этого создайте составное поле для сущности, поскольку будет сопоставлено только одно значение свойства для обхода.
- Повторное сканирование
- Повторное сканирование
Я обнаружил, что управляемое свойство и результаты поиска (шаблон отображения) не отображали правильное значение из свойства для обхода только через пару обходов или несколько часов спустя.Не знаю почему.