Поделиться через


Настройки поиска для SharePoint

Примечание.

Следующая страница относится к классическим сайтам в SharePoint Online. Эти функции не поддерживаются на современных сайтах SharePoint. Чтобы реализовать аналогичные функции в современных веб-частях SharePoint, ознакомьтесь с веб-частями PnP по адресу: https://microsoft-search.github.io/pnp-modern-search/

Создавайте настраиваемые сценарии поиска SharePoint и SharePoint Online с помощью каталога сайта на основе поиска, персонализированных результатов поиска или переносимости конфигурации поиска.

Каталог сайта на основе поиска

Поиск SharePoint позволяет создать каталог сайта на основе поиска без написания пользовательского кода.

Чтобы создать каталог сайта, выполните приведенные далее действия.

  1. Создайте шаблоны отображения каталога сайта.
  2. Определите тип результата каталога сайта.
  3. Создайте страницу результатов.
  4. Измените свойства веб-части Результаты.

Примечание.

В следующей процедуре используются шаблоны отображения, связанные с сайтом, без изменений. Если вы хотите изменить способ отображения результатов каталога сайта, измените создаваемые шаблоны отображения.

Создание шаблонов отображения каталога сайта

  1. Откройте сопоставленный сетевой диск с коллекцией главных страниц. Дополнительные сведения см. в статье Сопоставление сетевого диска с коллекцией главных страниц SharePoint.

  2. Создание копий HTML-файлов шаблона отображения, которые лучше всего сопоставляют то, что вы пытаетесь сделать. В сценарии каталога сайта это будет Item_Site.html и Item_Site_HoverPanel.html. Оба файла находятся в папке \Display Templates\Search на сопоставленном сетевом диске.

  3. Переименуйте копии Item_SiteDirectory.html и Item_SiteDirectory_HoverPanel.html файлов, как показано ниже.

    Шаблоны отображения каталога сайта

  4. Откройте файл Item_SiteDirectory.html и внесите следующие изменения:

    • Измените значение тега <title> с "Элемент сайта" на "Каталог сайта".
    • Измените первый <div> тег после открываемого <body> тега с <div id="Item_Site"> на <div id="Item_SiteDirectory">.
    • Измените имя файла JavaScript на var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Site_HoverPanel.js";var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_SiteDirectory_HoverPanel.js";панель при наведении указателя на .
  5. Откройте файл Item_SiteDirectory_HoverPanel.html и внесите следующие изменения:

    • Измените тег после <div> открываемого <body> тега с <title>Site Hover Panel Test</title> на <title>Site Directory Hover Panel</title>.
    • Измените <title> тег с <div id="Item_Site_HoverPanel"> на <div id="Item_SiteDirectory_HoverPanel">.

Определение типа результата каталога сайта

  1. Перейдите в раздел Параметры> сайтаТипы результатовпоиска>, а затем выберите Новый тип результата.

  2. Присвойте новому типу результата имя Basic Site Directory.

  3. В поле Как должны выглядеть эти результаты? выберите Каталог сайта.

    Пример конфигурации результатов по сайту

  4. Выберите Сохранить.

Создание страницы результатов

  1. В меню Параметры сайта выберите Содержимое сайта.
  2. Выберите элемент Страницы.
  3. В библиотеке Страницы выберите Файлы>Создать страницу документа>.
  4. На странице Создание страницы укажите Каталог сайта в поле Заголовок и sitedirectory в поле ИМЯ URL-адреса.
  5. Выберите пункт Создать.

Изменение свойств веб-части "Результаты"

  1. На странице Каталог сайта выберите Параметры>Изменить страницу.

  2. В веб-части "Результаты поиска" выберите меню веб-части и выберите команду Изменить веб-часть.

    Меню веб-части.

  3. В области инструментов веб-части выберите Изменить запрос , чтобы открыть построитель запросов.

  4. В текстовом поле Запрос введите следующее: ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>

  5. Выберите Тестовый запрос , чтобы убедиться в правильности синтаксиса. В области Предварительный просмотр результатов поиска должны отображаться дочерние сайты на сайте, указанном для пути в тексте запроса.

    Построитель запросов веб-части по результатам поиска

  6. Нажмите кнопку ОК , чтобы закрыть построитель запросов.

  7. В разделе Шаблоны отображения выберите Использовать типы результатов для отображения элементов.

  8. Выберите Базовый каталог сайта в списке Тип результата для элемента .

  9. В разделе Внешний вид измените заголовок на Сайты, к которых у меня есть доступ.

  10. Нажмите кнопку ОК , чтобы сохранить изменения в веб-части и закрыть панель инструментов веб-части.

    На следующем рисунке показан пример страницы каталога сайта на основе поиска.

    Пример каталога поисковых сайтов Contoso

Персонализированные результаты поиска

Персонализированный поиск — это когда отображаются результаты поиска, предназначенные для пользователя, отправляющего поисковый запрос. В этом разделе описаны некоторые сценарии для персонализированного поиска и способы их реализации.

Ваш сценарий новостей

В этом сценарии вы создаете поисковую надстройку, которая отображает соответствующее содержимое, например новости и события, предназначенные для пользователя.

Персонализированный сценарий поиска новостей

Персонализированный сценарий поиска новостей

Чтобы реализовать сценарий новостей, используйте веб-часть "Результаты поиска SharePoint" и шаблоны отображения по умолчанию, чтобы отобразить сведения о новостях, включая название, описание и изображение свертки. Отображение первых десяти новостей. Когда пользователь выбирает образ свертки, заголовок или ссылку Подробнее, страница новостной статьи загружается.

Кроме того, можно создать надстройку поиска с помощью API запросов (CSOM или REST). Количество отображаемых новостей можно настроить с помощью свойств надстройки поиска.

Другой вариант — использовать API запросов для добавления кода API запроса, который извлекает результаты поиска непосредственно в макет страницы.

Отображение новостей и сведений о событиях, относящихся к пользователю

  1. Измените запрос, чтобы отфильтровать результаты новостей и событий на основе свойств профиля пользователя, таких как бизнес-подразделение, регион и язык.
  2. Получите свойства Title, Description, rollup image и URL-адрес для новостей или элементов событий.
  3. Реализуйте логику сортировки для объединенных новостей и событий на основе свойства LastModifiedDate .

Сценарий предстоящих событий

В этом сценарии поисковая надстройка отображает соответствующие события, предназначенные для пользователя.

Персонализированный сценарий поиска предстоящих событий

Персонализированный сценарий поиска предстоящих событий

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

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

Вы также можете создать поисковую надстройку, которая использует API запросов для получения результатов события. Вы можете настроить надстройку поиска так, чтобы по умолчанию отображались только десять из последних предстоящих событий, но сделать этот параметр настраиваемым с помощью свойств надстройки поиска.

В этом сценарии надстройка поиска отображает результаты поиска как рекомендуемый контент, предназначенный для пользователей в таких местах, как корпоративная интрасеть и целевые страницы подразделений. Это можно реализовать с помощью части надстройки, содержащей подключаемый модуль jQuery с HTML, который использует службу поиска REST или CSOM запроса для получения результатов поиска из SharePoint и отображения результатов.

В примере персонализации результатов поиска в надстройке SharePoint показан базовый и персонализированный пример результатов поиска, в котором используется CSOM поискового запроса. Базовый пример поиска позволяет пользователю предоставить фильтр поиска для поиска на уровне клиента. Поиск на сайтах выполняется на основе указанного пользователем фильтра.

В примере сначала возвращается контекст SharePoint с помощью класса SharePointContextProvider .

var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);

Затем он создает запрос на основе введенных пользователем данных. Он ограничивает запрос семействами веб-сайтов, а затем вызывает метод ProcessQuery , передав контекст и запрос в вызове метода. Затем он возвращает результаты ProcessQuery в виде таблицы результатов, которая затем анализируется методом FormatResults .

using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
  string query = searchtext.Text + " contentclass:\"STS_Site\"";
  ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
  lblStatus1.Text = FormatResults(results);
}

Метод ProcessQuery создает объект KeywordQuery , представляющий поисковый запрос.

KeywordQuery keywordQuery = new KeywordQuery(ctx);
keywordQuery.QueryText = keywordQueryValue;
keywordQuery.RowLimit = 500;
keywordQuery.StartRow = 0;
keywordQuery.SelectProperties.Add("Title");
keywordQuery.SelectProperties.Add("SPSiteUrl");
keywordQuery.SelectProperties.Add("Description");
keywordQuery.SelectProperties.Add("WebTemplate");
keywordQuery.SortList.Add("SPSiteUrl", Microsoft.SharePoint.Client.Search.Query.SortDirection.Ascending);

Затем поисковый запрос отправляется в SharePoint путем вызова метода ExecuteQuery_Client(Query). Результаты возвращаются в объект T ClientResult<>.

SearchExecutor searchExec = new SearchExecutor(ctx);
ClientResult<ResultTableCollection> results = searchExec.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();

Метод FormatResults выполняет итерацию по результатам и создает таблицу HTML для отображения результирующих значений.

string responseHtml = "<h3>Results</h3>";
responseHtml += "<table>";
responseHtml += "<tr><th>Title</th><th>Site URL</th><th>Description</th><th>Template</th></tr>";
if (results.Value[0].RowCount > 0)
{
  foreach (var row in results.Value[0].ResultRows)
  {
    responseHtml += "<tr>";
    responseHtml += string.Format("<td>{0}</td>", row["Title"] != null ? row["Title"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["SPSiteUrl"] != null ? row["SPSiteUrl"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["Description"] != null ? row["Description"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["WebTemplate"] != null ? row["WebTemplate"].ToString() : "");
    responseHtml += "</tr>";
  }
}
responseHtml += "</table>";

Метод ResolveAdditionalFilter проверяет наличие "Apptest". Если он найден, в результатах поиска возвращается список шаблонов сайтов любого типа. Если он не найден, в результатах поиска возвращаются только веб-шаблоны службы sts.

private string ResolveAdditionalFilter(string aboutMeValue)
{
  if (!aboutMeValue.Contains("AppTest"))
  {
    return "WebTemplate=STS";
  }
return "";
}

Затем в примере создается запрос и вызывается методы ProcessQuery и FormatResults для получения, форматирования и отображения результатов поиска.

string query = "contentclass:\"STS_Site\" " + templateFilter;
ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
lblStatus2.Text = FormatResults(results);

Пользовательский интерфейс для этого примера показан на следующем рисунке.

Пример пользовательского интерфейса для персонализированных результатов поиска

Переносимость конфигурации поиска

В SharePoint и SharePoint Online можно экспортировать и импортировать настраиваемые параметры конфигурации поиска между семействами веб-сайтов и сайтами. Вы можете экспортировать только настроенные параметры конфигурации поиска на уровне служба приложения (SSA), и для этого необходимо использовать API-интерфейсы поиска. Параметр экспорта недоступен в пользовательском интерфейсе SharePoint.

В примере импорта и экспорта параметров поиска для SharePoint Online показано, как импортировать и экспортировать параметры поиска для сайта SharePoint Online с помощью CSOM поиска в консольном приложении.

Переносимые параметры конфигурации

При экспорте настраиваемых параметров конфигурации поиска SharePoint создает файл конфигурации поиска в формате XML. Этот файл конфигурации поиска содержит все экспортируемые настраиваемые параметры конфигурации поиска на уровне SSA, семейства веб-сайтов или уровня сайта, с которого начинается экспорт. Файл конфигурации поиска для семейства веб-сайтов, например, не содержит параметры конфигурации настраиваемого поиска для отдельных сайтов в семействе.

При импорте файла конфигурации поиска SharePoint создает и включает каждый настраиваемый параметр конфигурации поиска в семействе веб-сайтов или на сайте, с которого начинается импорт.

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

Параметры поиска, которые можно экспортировать и импортировать

Параметр конфигурации Зависимости
Правила запросов, включая блоки результатов, повышенные результаты и сегменты пользователей Источники результатов, типы результатов, схема поиска, модель ранжирования
Источники результатов Схема поиска
Типы результатов Схема поиска, источники результатов, шаблоны отображения
Схема поиска Нет
Модель ранжирования Схема поиска

Вы можете экспортировать настраиваемые параметры конфигурации поиска из SSA и импортировать параметры в семейства веб-сайтов и на сайты. Но вы не можете импортировать настраиваемые параметры конфигурации поиска в SSA. Вы также не можете экспортировать параметры конфигурации поиска по умолчанию.

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

Параметры сайта: поиск

Эти параметры также доступны в разделе Администрирование семейства веб-сайтов . Кроме того, можно программно импортировать и экспортировать эти параметры с помощью CSOM поиска SharePoint.

Поиск файлов конфигурации

В следующей таблице перечислены файлы схемы, поддерживающие конфигурацию поиска. Сведения о формате схемы см. в статье Схемы переносимости параметров поиска SharePoint.

Примечание.

Файлы схемы можно скачать из SP15_search_settings_portability_schema.zip.

Схемы переносимости параметров поиска

Схема Описание
SPS15XSDSearchSet1 Указывает XML-код, представляющий источники результатов.
SPS15XSDSearchSet2 Указывает XML-код, представляющий административные типы и члены для управления экземпляром поиска SSA. Сюда входят типы элементов результатов и параметры правил свойств.
SPS15XSDSearchSet3 Указывает XML-код, представляющий параметры, включающие правила запросов, источники результатов, управляемые свойства, свойства для обхода и модели ранжирования.
SPS15XSDSearchSet4 Указывает XML, представляющий перечисления, используемые в других схемах.
SPS15XSDSearchSet5 Указывает XML-код, представляющий перечисления, такие как ResultType , которые используются в других схемах.
SPS15XSDSearchSet6 Указывает XML-код, представляющий перечисления, используемые в схеме Microsoft.Office.Server.Search.Administration .

Использование CSOM для переноса параметров конфигурации

API CSOM, необходимые для импорта и экспорта параметров конфигурации поиска, находятся в классе SearchConfigurationPortability в пространстве имен Microsoft.SharePoint.Client.Search.Portability .

В следующем примере кода показано, как экспортировать параметры конфигурации поиска сайта.

private static void ExportSearchSettings(ClientContext context, string settingsFile)
{
  SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
  SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
  ClientResult<string> configresults = sconfig.ExportSearchConfiguration(owner);
  context.ExecuteQuery();
  string results = configresults.Value;
  System.IO.File.WriteAllText(settingsFile, results);
}

В следующем коде показано, как импортировать параметры конфигурации поиска сайта.

private static void ImportSearchSettings(ClientContext context, string settingsFile)
{
  SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
  SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
  sconfig.ImportSearchConfiguration(owner, System.IO.File.ReadAllText(settingsFile));
  context.ExecuteQuery();
}

См. также