Использование правил для запросов, типов результатов и отображения на основе шаблона для Custom Search Sales Report в SharePoint 2013

Оригинал статьи опубликован во вторник, 24 июля 2012 года

(Стандартный отказ от обязательств: Ужасное форматирование в блоге. Позаботьтесь о своих глазах - скачайте файл в формате документа Word.)

Итак, у нас длинное название сегодняшней темы, но мы охватим много интересного материала. SharePoint 2013 обладает рядом выдающихся особенностей, которые позволяют использовать и настраивать результаты поиска, как никогда раньше. Я не буду пытаться дать всесторонний обзор всех, или даже подробную информацию о компонентах, которые мы используем, в этой публикации, поскольку это описание доступно везде. Тем не менее, я задам стартовый набор результатов поиска, дам краткий обзор каждой из этих функций, а затем опишу процесс использования их для создания прекрасных и индивидуальных результатов поиска, что позволит продемонстрировать то, каким образом все эти части работают вместе.

 

Для начала давайте начнем с того, как выглядят результаты поиска, когда я запускаю запрос на "отчеты о продажах" в моей ферме. Примечание:&nbspэто сборка бета-2, и конечная версия может выглядеть по-другому:

 

 

Это нестандартный опыт работы с результатами поиска, и он выглядит отлично. Однако мы добавили эти возможности, чтобы помочь конечному пользователю действительно обогатить опыт поиска в SharePoint 2013, поэтому давайте немного изменим наш сценарий. У нас в компании есть несколько подразделений и некоторые из них отвечают за продажи в пределах их подразделения. Каждое подразделение использует стандартный шаблон Excel, чтобы сообщать о своей сбытовой деятельности. Кроме того, каждое подразделение имеет один лицо, ответственное за управление отношениями с клиентами и предоставление отчетности с информацией о продажах. Таким образом, как мы можем использовать эти возможности в SharePoint, чтобы помочь стандартизировать и выявить важную информацию о подразделении и его клиентах? Для решения этой задачи мы собираемся использовать многоэтапный подход.

 

Настраиваемый тип контента

 

Начнем с того, что мы собираемся создать настраиваемый тип контента для всех пользователей, где в SharePoint можно добавлять отчеты о продажах. Я начинаю с создания столбцов, которые я собираюсь использовать - это поля, которые я хочу обрабатывать в поиске отчета о продажах. Для нашего сценария я задал следующие столбцы, которые мы будем использовать:

 

Название столбца

Тип

Менеджер по работе с партнерами

Однострочный текст

Отчеты по первичным данным

Число

Регион продаж

Выбор: Северная Америка, EMEA, Азия

Топ счетов

Однострочный текст

Итого счетов

Число

 

Затем я создал тип контента, который включает в себя все эти столбцы. Я создал тип контента на публикуемом узле связи, связанном с моей Управляемой службой метаданных, так что они распространяются на все мои узлы-подписчики на ферме, что в моем случае - все узлы во всех веб-приложениях.

 

Следующий этап, который в моем случае производился вручную, заключался в добавлении этого типа контента в список доступных типов контента для каждого набора узлов подразделения в библиотеку документов, где они хранят отчеты о продажах (среди всего прочего). Очевидно, что существуют способы автоматизации этого этапа, но для краткости я сделал это вручную. Итак, наш первый этап выполнен - у нас есть настраиваемый тип контента, он развернут, и по мере того, как к библиотекам добавляются отчеты о продажах, Менеджеры по работе с партнерами смогут идентифицировать отчет о продажах при их загрузке и заполнении метаданных.

 

Управляемые свойства

 

Теперь, когда у нас есть отчеты о продажах на страницах, мы должны создать управляемые свойства из столбцов настраиваемой страницы отчета о продажах. Здесь в SharePoint 2013 по сравнению с SharePoint 2010 нет ничего действительно нового для целей данного сценария - вам нужно выполнить полный просмотр, чтобы создать свойства для просмотра, а затем создать управляемые свойства, которые сопоставляются со свойствами для просмотра, а затем выполнить еще один полный просмотр. Я говорю о том, что сценарий ничем не отличается, поскольку мы реализуем решение на уровне фермы. Тем не менее SharePoint 2013 имеет невероятно удобную функцию, которая позволяет администраторам страниц отмечать набор страниц или страницу, или даже выполнять полный просмотр. Это избавит вас от необходимости делать полный просмотр всего предприятия, если вы хотите сделать это для более узкой области, что действительно уникально. Я постараюсь подробно описать эту функцию в другой статье. Здесь я просто хочу отметить ее существование, но неприменимость в данном случае, поскольку наше решение охватывает всю ферму.

 

Правила для запросов

 

На данный момент у нас есть отчеты о продажах, для которых используется настраиваемый тип контента, и у нас есть управляемые свойства, которые заполняются значениями метаданных для отчетов о продажах. Следующее, что мы хотим сделать, это убедиться, что эти наименования каким-то образом "замечаются", когда кто-либо делает поиск чего-либо, что должно, вероятно, включать один из этих отчетов о продажах. SharePoint 2013 имеет для этого идеальную функцию, и она называется Правила для запросов. Правила для запросов имеют три основных компонента:

 

  1. Условия - условия правила для запроса определяют, когда будет срабатывать правило. Существует целый ряд различных вариантов, которые вы можете применять к правилам. Это всего лишь краткий обзор, но возможности их использования просто БЕСКОНЕЧНЫ, и некоторые из них вы увидите в стандартной поставке. Другое интересное свойство - если вы хотите, чтобы правило для запросов срабатывало для КАЖДОГО результата поиска, то у вас просто не заданы условия. Разумеется, вы можете сделать противоположное, и задать несколько условий. Здесь вы уже видите, что можете заблудиться в возможностях. Условия, которые можно использовать для правила, включают:
    1. запрос, который начинается с или заканчивается на конкретное слово или фразу
    2. запрос, который содержит слова-действия (слова, которые вы определяете, обычно являются глаголами, например, "скачать" и т.д.)
    3. запрос содержит слово, которое находится в наборе управляемых метаданных (с этим вы можете делать ОЧЕНЬ интересные вещи)
    4. запрос, который является типичным для другого источника результата, например, видео результаты, результаты для документов и т.д. - это может быть что угодно, так как вы определяете и создаете источники результатов
    5. результаты, содержащие стандартные типы результатов, например, обсуждения, таблицы Excel и т.д.
    6. расширенные правила, где можно сойти с ума с регулярными выражениями, разделить запрос на действия и условия (то, что остается после удаления действия) и т.д.
  2. Действия - это то, что вы собираетесь делать, когда условия вашего правила для запроса были соблюдены. У вас есть три различных варианта, а именно:
    1. Добавить Promoted Result - это подобно тому, как Best Bets работали в SharePoint 2010 и Visual Best Bets работали с FAST Search для SharePoint 2010. Вы можете добавить новую ссылку, которая будет отображаться в верхней части всех результатов поиска. Вы можете выбрать ссылку таким образом, что она будет отображаться как гиперссылка или как рисунок, по аналогии с Visual Best Bet.
    2. Добавить Блок результата - это то, где вы выполняете дополнительный запрос и возвращаете и визуализируйте результаты вместе с результатами исходного поиска. Это называется блоком потому, что результаты оказываются все вместе в блоке. Вы можете задать отображение блока в верхней части всех результатов поиска или можете объединить с другими результатами поиска в зависимости от ранжирования. Важно отметить, что это НЕ ОЗНАЧАЕТ, что он соотносит результаты между двумя запросами. Это просто означает, что блок в целом будет иметь ранг вместе с другими локальными результатами поиска. При нажатии на любой элемент в блоке результата, такое действие нажатия записываются локально, и блок в целом становится более релевантным. Таким образом, если элементы в блоке имеют много кликов, то с течением времени блок начнет смещаться в результатах, поскольку он будет иметь большую релевантность, чем отдельные результаты, которые не выбираются так часто. На самом деле существует МНОЖЕСТВО вещей, которые вы можете сделать, чтобы настроить блок, но, как и говорилось ранее, я не буду подробно рассматривать это здесь и сейчас.
    3. Изменение ранжирования результатов путем изменения запроса - это вариант предполагает выполнение того, что там подробно указано в названии. Вы действительно можете изменить запрос, который был направлен, любым удобным для вас способом. Вы можете добавить дополнительные критерии, можете удалить условия, использовать XRANK для изменения рейтинга - здесь вариантов довольно много.
  3. Публикация – позволяет вам контролировать то, использовать ли и когда использовать правило для запроса. Например, вы можете создать набор правил, которые в определенный день вы хотите запустить после продаж в День благодарения. Тем не менее, вы не хотите, чтобы они применялись вплоть до конкретного дня. Таким образом, вы можете создавать правила, но настраивать публикацию, так, что правило будет неактивно. Или вы можете сделать правило активным, но настроить его так, чтобы оно не применялось до определенной даты, а затем заканчивалось в более позднее дату.

Итак, это было "краткое" описание того, что такое правила для запроса. Так каким же образом мы будем использовать их здесь? Оказывается, что есть правило для запроса, которое является нестандартным и сможет позаботиться об этом. Я сделал это правило неактивным на скриншоте выше, чтобы вы лучше смогли понять его действие. В нашем случае, нам нужны запросы, в которых кто-то хочет увидеть отчет о продажах, чтобы для нашего отдела продаж всплывало и отображалось сообщение. Таким образом, перейдите в Набор узлов для поиска, Настройки узла, и нажмите на ссылку Правила для запроса. Нажмите в раскрывающемся списке Выбрать источник и выберите Локальные отчеты и Результаты данных; вы увидите правило для запроса, которое называется Отчеты и данные. Нажмите на него и выберите Вид из ниспадающего меню, чтобы посмотреть, как созданы правила. Это работает следующим образом:

 

  • Условие - условие для правила заключается в том, что запрос содержит одно из этих слов в начале или в конце запроса: analysis;cube;dashboard;dashboards;data;database;report;reports;sales. Обратите внимание, что вы видите отчеты и продажи. Поэтому, если кто-то делает запрос на "отчеты о продажах", то этот запрос будет выполняться. Это звучит просто прекрасно - если кто-то ищет "отчеты о продажах", то мы ХОТИМ, чтобы он видел отчеты о продажах нашего подразделения. Как часть этого правила, действию назначается соответствие, а все остальное относится к условию. В этом случае "отчеты" относятся к действию, а "продажи" к условию.
  • Действие этого правила запускает другой запрос на основании ТОЛЬКО условий. Таким образом, для условия, указанного выше, оно будет запускать отдельный запрос только для "продажи". При этом будет добавлен блок, который всегда будет находиться выше всех других результатов. НО ... при этом будет осуществляться поиск ТОЛЬКО для продаж в Локальных отчетах и Результатах данных. Это источник результатов, который также является стандартным, эффективно работает только с документами Excel (расширение файла заканчивается на .XLSX, XLS и т.д.). Отлично, т.е. это запрос для запуска запроса для "продаж" только в отношении документов Excel.
  • Публикация – правило активно, без ограничений в дате начала и окончания, поэтому оно всегда срабатывает.

 

Я снова активировал это правило для запроса, так что теперь это то, как выглядят результаты, когда я делаю запрос для отчетов о продажах:

 

 

Итак, все лучше и лучше - правило для запроса вступило в действие, и теперь мы получаем наши документы, основанные на типе контента отчета по продажам, что отображается в верхней части результатов - это здорово! Тем не менее, у нас все еще не отображаются метаданные о документах и ​​это то, что действительно все сводит воедино.

 

Отображение на основе шаблонов

 

В SharePoint 2010, если вы хотите обрабатывать определенный элемент другим способом, то это был довольно сложный процесс входа и изменения одного ОГРОМНОГО куска XSLT в основной части веб-результатов. При этом необходимо было практиковать свои удивительные навыки в XSLT, и попытаться найти нужное месте в этом огромном документе, где можно вставить пользовательский код. В целом это был менее, чем радостный опыт.

 

В SharePoint 2013 мы отобразили шаблоны и улучшения, связанные с ними. Вам больше не нужно иметь XSLT Zen, теперь вы можете создать свой собственный код прямо в HTML - супер! На самом деле для этой статьи я использовал Adobe Dreamweaver CS6 для создания "кода" для моих пользовательских отображений на основе шаблонов. Итак, каким образом отобразить шаблоны?

 

При отображении на основе шаблона, у вас есть несколько различных вещей, за изменениями которых можно следить:

 

  1. Управляемые свойства - вам необходимо указать, какие управляемые свойства необходимо получить во время выполнения запроса. Эти свойства вы можете использовать в HTML, используя метод, который я опишу ниже.
  2. Внешний JS и CSS - если у вас есть JavaScript или CSS файлы, которые вы хотите использовать при отображении шаблона, то вы можете сделать их внешними и добавить к вашему отображению на основе шаблона.
  3. Встроенный JS - вы также можете использовать встроенный JS для отображения на основе шаблона. Вам просто нужно убедиться, что он находится ниже первого <div> в отображении на основе шаблона, более подробно об этом ниже.
  4. HTML - это когда вы создаете фактический HTML для отображения на основе шаблона, который будет обрабатывать результаты.

 

Для отображения на основе шаблона, мы собираемся объединить элементы из настраиваемого типа контента отчета о продажах, который мы создали, так что мы можем показать это в результатах поиска следующим образом:

 

 

Начнем с самого начала, чаще всего вы всегда будете начинать с существующего отображения на основе шаблона, когда вы создаете новый шаблон. Если вы перейдете в набору страниц в поисковом центре, Настройки страницы, затем нажмете на ссылку Главные страницы и макеты страниц. Когда вы попадаете в библиотеку, нажмите на папке Отображение на основе шаблонов, затем нажмите на Папку поиска. Там вы найдете все нестандартные отображения на основе шаблонов. Вы, вероятно, увидите, некоторые файлы, которые имеют одинаковое имя, но в формате .html или .js. Вас интересует только формат .html – .js файлы создаются автоматически, когда вы загружаете .html файл. В этом случае, так как отображение на основе шаблона используется для файлов Excel, я начал с файла Item_Excel.htm. Я локально скачал копию, переименовал его в SalesReport.html, а затем открыл его в Dreamweaver.

 

Далее я добавляю управляемые свойства. Здесь есть тег под названием mso:ManagedPropertyMapping, где вы указываете управляемые свойства, требуемые для отображения на основе шаблона. Я просто добавил собственный в конце списка, используя тот же формат, что и для других управляемых свойств. Это выглядит так:

 

<mso:ManagedPropertyMapping msdt:dt="string">'Title':'Title', 'Author':'Author', 'Size':'Size', 'Path':'Path', 'Description':'Description', 'LastModifiedTime':'LastModifiedTime', 'CollapsingStatus':'CollapsingStatus', 'DocId':'DocId', 'HitHighlightedSummary':'HitHighlightedSummary', 'HitHighlightedProperties':'HitHighlightedProperties', 'FileExtension':'FileExtension', 'ViewsLifeTime':'ViewsLifeTime', 'ParentLink':'ParentLink', 'ViewsRecent':'ViewsRecent', 'FileType':'FileType', 'IsContainer':'IsContainer', 'ServerRedirectedURL':'ServerRedirectedURL', 'ServerRedirectedEmbedURL':'ServerRedirectedEmbedURL', 'ServerRedirectedPreviewURL':'ServerRedirectedPreviewURL', 'AccountManager':'AccountManager', 'SalesRegion':'SalesRegion', 'TotalAccounts':'TotalAccounts', 'TopAccounts':'TopAccounts', 'DirectReports':'DirectReports', 'ContentType':'ContentType'</mso:ManagedPropertyMapping>

 

Как вы видите, я добавил AccountManager, SalesRegion, и т.д. - все те свойства, которые я создал для пользовательского типа контента. После этого я прокрутил вниз до следующего момента:

 

<div id="_#= $htmlEncode(itemId) =#_" name="Item" data-displaytemplate="ExcelItem" class="ms-srch-item" onmouseover="_#= ctx.CurrentItem.csr_ShowHoverPanelCallback =#_" onmouseout="_#= ctx.CurrentItem.csr_HideHoverPanelCallback =#_">

                                                                _#=ctx.RenderBody(ctx)=#_                                                     

                <div id="_#= $htmlEncode(hoverId) =#_" class="ms-srch-hover-outerContainer"></div>

</div>

 

Я удалил все между внешними тегами DIV (которые я выделил красным цветом). Теперь я могу приступить к написанию HTML. Прежде чем начать делать это, вам необходимо знать три вещи:

 

  1. Вам, вероятно, будет проще сохранить <style> тег в разделе <head> отображения на основе шаблона. По причинам, в которые я не буду сейчас вдаваться, эти style теги будут исключены, когда отображение на основе шаблона будет обрабатываться, так что вам, в конечном итоге, нужно будет скопировать style теги и поместить их в отдельный файл CSS. Тем не менее, во время создания HTML вы можете использовать и изменять свои style теги, чтобы убедиться, что они отражают тот вид, который вы хотите придать.
  2. Как уже упоминалось выше, вы можете добавить то, что я назвал встроенный JavaScript, что в действительности означает, что вы можете добавлять код JavaScript до тех пор, пока он находится в правильном месте. Правильное место для отображения на основе шаблона означает, что он должен быть помещен после первого тега DIV в вашем отображении на основе шаблона. Кроме того, он находится между открывающим и закрывающим тегом, который выглядит следующим образом: <!--#_ and _#-->. Ниже я подробнее дам информацию о пользовательских тегах, но достаточно сказать, если код не находится между этими тегами, то он не будет выполняться. Хотя одна очень ХОРОШАЯ вещь заключается в том, что вы можете использовать переменные, которые определяете во встроенном JavaScript при создании HTML, и которые будут выходной величиной. Ниже я поясню это подробнее.
  3. Чтобы выделить управляемые свойства или переменную из любого созданного встроенного кода JavaScript, они должны быть заключены между открывающим и закрывающим тегом, который выглядит примерно так: _#= and =#_. Управляемые свойства доступны в объекте, называемом ctx.CurrentItem. Например, чтобы выделить управляемое свойство AccountManager, я добавил бы этот тег: _#= ctx.CurrentItem.AccountManager =#_. Если бы у меня был код JavaScript, который выглядел так: var foo = “The current Account Manager is “ + ctx.CurrentItem.AccountManager + “.”;, то чтобы затем выделить "нечто", я бы добавил следующий тег: _#= foo =#_. Это дает вам полную гибкость в добавлении или обработке данных для работы с отображением на основе шаблона.

 

Теперь, когда вы понимаете механизмы создания HTML, вот то, что я использовал для создания отображения на основе шаблона, показанного выше; в начале тега я добавил эти элементы стиля:

 

<style>

.ReportDiv

{

                float:left;

}

.ReportText

{

                font-family: Verdana, Geneva, sans-serif;

                font-size: 12px;

}

.ReportHeading

{

                font-weight: bold;

}

.LogoImg

{

                margin-top: 15px;

                width: 118px;

                height: 101px;

}

.MasterDiv

{

                float:left;

                height: 215px;

                width: 342px;

                background-repeat: no-repeat;

                background-image: url(https://sps/sites/search/PublishingImages/SalesReportBackground.PNG);

                padding: 15px;

}

.DetailsContainer

{

                background-color:#CCC;

}

</style>

 

Здесь важно отметить, что изображение, которое я использую в качестве фона в подробной информации для Менеджера по работе с партнерами, это то изображение, которое я уже загрузил; все остальное должно быть понятным. Опять же, при наличии style тега в моем <head> разделе, я четко вижу то, каким образом будет выглядеть макет при создании его в Dreamweaver.

Теперь давайте посмотрим на HTML, который используется для создания отображения на основе шаблона:

            <div>

                <div class="ReportDiv">

                                <img class="LogoImg" src="https://sps/sites/search/PublishingImages/SalesReportLogo.PNG" />

                </div>

                <div class="MasterDiv">

                   

                    <!-- Title and link to item -->

                    <a href="_#= ctx.CurrentItem.Path =#_" class="ReportText">_#= ctx.CurrentItem.Title =#_</a>

                    <br/><br/>

 

                    <!-- Account Manager -->

                    <span class="ReportHeading ReportText">

                      Account Manager:

                    </span>

                    <span class="ReportText">

                      _#= ctx.CurrentItem.AccountManager =#_

                    </span><br/>

                   

                    <!-- Sales Region -->

                    <span class="ReportHeading ReportText">

                      Sales Region:

                    </span>

                    <span class="ReportText">

                      _#= ctx.CurrentItem.SalesRegion =#_

                    </span><br/>

                   

                    <!-- Total Accounts -->

                    <span class="ReportHeading ReportText">

                      Total Accounts:

                    </span>

                    <span class="ReportText">

                      _#= ctx.CurrentItem.TotalAccounts =#_

                    </span><br/>

                   

                    <!-- Top Accounts -->

                    <span class="ReportHeading ReportText">

                      Top Accounts:

                    </span>

                    <span class="ReportText">

                      _#= ctx.CurrentItem.TopAccounts =#_

                    </span><br/>

                   

                    <!-- Direct Reports -->

                    <span class="ReportHeading ReportText">

                      Direct Reports:

                    </span>

                    <span class="ReportText">

                      _#= ctx.CurrentItem.DirectReports =#_

                    </span><br/>

                   

                    <!-- Hit Highlighted Text -->

                    <br/>

                    <span class="ReportHeading ReportText">

                                Details:

                    </span>

                    <br/>

                    <span class="DetailsContainer ReportText">

                                _#= Srch.U.processHHXML(ctx.CurrentItem.HitHighlightedSummary) =#_

                    </span>

                </div>

            </div>        

 

Я пропущу описание особенностей форматирования данного контента и акцентирую внимание только на данных. Вы можете увидеть, где я включил в код управляемые свойства с помощью тегов _#= and =#_. Вы видите, что это чисто символическая замена, поэтому я могу даже использовать это непосредственно в моем <a> href атрибуте выше (по сравнению с выполнением этого в XSLT, которое намного сложнее). Остальные поля просто вставляются в соответствующие DIV или SPAN теги для форматирования. Один "особый" случай, указанный здесь, используется для HitHighlightedSummary, т.е. использование встроенного компонента обработки, который поставляется с поиском. На данный момент у меня нет полного списка компонентов и методов, а также того, что они делают, но я добавляю этот только потому, что если его не использовать, то ваша информация не будет выделена. Поэтому убедитесь, что вы используете этот метод для данной цели.

 

Теперь, когда все работает, необходимо сделать еще одну вещь. Я копирую все, что находится у меня между тегами <style> и вставляю в новый документ CSS, который называется SalesReport.css. На моей главной странице в /Display Templates/Search folder, я создал другую папку под названием styles. Я загрузил файл SalesReport.css в эту папку. Чтобы использовать это теперь в моем отображении на основании шаблона, я должен добавить новый тег сценария. Он должен быть ниже <body> тега, а выше <div> тега. Я использую функцию SharePoint JavaScript с именем $includeCSS, чтобы CSS файл опустился для отображения на основании шаблона. Таким образом, начальная пометка выглядит следующим образом:

 

<body>

<script>

                                $includeCSS(this.url, "./styles/SalesReport.css");

</script>

 

<div id="Item_SalesReport">

 

Итак, мы имеем теперь полный код, но каким образом мы сможем получить отображение на основании шаблона для последующего его использования?

 

Типы результатов

Типы результатов - это то, каким образом вы получаете отображение шаблона на основе набора правил. Правила довольно просты в использовании - вы можете активировать их для конкретного предопределенного типа контента, например, электронной почты, PDF, документов Word, Wiki SharePoint и т.д. Кроме того, вы можете их использовать только тогда, когда запрос определен для конкретного источника результата. Наконец, вы можете также выбрать любое управляемое свойство в качестве критерия для правила с любым общим сравнением. Например, вы можете указать активировать правило для типа результата, когда поле AccountManager содержит значение "вице-президент", если вы хотите иметь другой тип отображения, используемого для вашего VP. В нашем случае мы хотим, чтобы наш результат применялся только тогда, когда тип контента равен "Отчету о продажах". Таким образом, мы добавляем условие для типа результата, которое указывает, когда ContentType равен "Отчету о продажах".

 

 

Как можно отметить, мы могли бы даже добавить несколько значений для соответствия. Можно также добавить несколько свойств, которые относятся к типу AND. Для этого сценария все, что нам нужно - это ContentType. После того как мы определили условия, мы можем настроить Действие для правила. Для типа результата Действие находится в ниспадающем меню со всеми имеющимися отображениями на основании шаблонов. Все, что мне нужно сделать, – это выбрать отображение на основании шаблона Отчет из ниспадающего меню, а затем нажать кнопку Сохранить, чтобы создать свой тип результата. Опять же, если вы не уверены в том, как создать типы результатов, то посмотрите на все типы результатов, доступных в SharePoint. Вы обнаружите много хороших идей для новых типов результата, глядя на некоторые из уже существующих.

 

Объединение

Теперь у нас есть все части - пользовательский тип контента, который охватывает необходимые нам метаданные, некоторые управляемые свойства для его извлечения и определения в индекс, правило для запроса, которое гарантирует, что контент отчетов о продажах отобразится в верхней части списка, когда кто-то направит запрос на "отчеты о продажах", отображение на основе шаблона, которое демонстрирует полученные метаданные в действительно уникальном и полезном формате, который и отдаленно не близок к типичным результатам поиска, и тип результата, который гарантирует использование отображения на основании шаблона, когда настраиваемый тип контента отражается в результатах поиска. Результаты по окончании работы выглядят следующим образом:

 

 

На этом мы завершаем введение в некоторые самые интересные функции SharePoint 2013 для представления результатов поиска. Надеюсь, это помогло обрести вам уверенность при работе с этими функциями, и вы сможете найти много полезных и интересных способов их применения.

Это локализованная статья в блоге. Оригинал статьи: Using Query Rules, Result Types and Display Templates for a Custom Search Sales Report in SharePoint 2013