Поиск для сайта на базе SharePoint 2013. Часть 2. Адаптация сайта

Часть 1: robots.txt, sitemap.xml и другие особенности
Часть 2. Адаптация сайта

Продолжая тему построения поиска на базе SharePoint 2013 для сайта, сегодня я расскажу как можно оптимизировать сам сайт для индексирования его силами SharePoint 2013 Server.

Сайт

Какая технология использовалась для создания сайта (HTML, PHP, Classic ASP, ASP.NET, ...) - значения не имеет. Единственное требование - возвращать HTML-код, а не использовать какой-нибудь Flash.

Идентификация краулера

Что "научить" сайт правильно реагировать на краулер поисковика SharePoint 2013, первое что понадобиться - уметь этот краулер идентифицировать. Краулер SharePoint 2013 при запросе содержимого указывает следующий User-Agent (по умолчанию):

Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)

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

HKLM\SOFTWARE\Microsoft\Office Server\15.0\Search\Global\Gathering Manager\UserAgent

Помимо заголовка User-Agent в запросе присутствует ещё один - From. В качестве значения он содержит адрес электронное почты, указанный в панели администрирования поиска.

Если менять значение ключа в реестре менять не хочется, а отличать свой SharePoint-краулер от чужих надо - можно положиться на него. Вот пример запроса краулера SharePoint 2013:

Пример идентификации

В случае, если сайт сделан на ASP.NET, то в codebehind можно реализовать какое-нибудь булево свойство IsFriendlyCrawler, которое будет возвращать True в случае, если страница запрашивается своим краулером, и False - в противном случае:

public bool IsFriendlyCrawler
{
    get
    {
        var request = Page.Request;
        var header = request.Header;
        var userAgent = header["User-Agent"]
        var fromMail = header["From"]
        
    }
}

Этот подход поможет сделать некоторый контент вашего сайта доступным только для внутреннего поиска, а также создавать search-based решения.

При индексации сайта SharePoint 2013 создает управляемые свойства для каждого meta-тега в заголовке страницы. На странице демо-сайта search.vitalyzhukov.ru, я добавил следующий meta-тег:

После индексации в схеме поиска будут добавлены следующие свойства:

Их значения также можно использовать для формирования результатов или учета при ранжировании.

IFrame

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

<ifram src="framsource.aspx"></iframe>

будет проиндексировано как если бы это была обычная ссылка

<a href src="framsource.aspx"></a>

Учитывайте это, чтобы в результаты поиска не попадали ссылки, не предназначенные для непосредственного просмотра пользователями.

Виталий Жуков

Виталий Жуков

SharePoint архитектор, разработчик, тренер, Microsoft MVP (Office Development). Более 15 лет опыта работы с SharePoint, Dynamics CRM, Office 365, и другими продуктами и сервисами Microsoft.

Смотрите также

Поиск на базе SharePoint 2013. Продажа

Поиск на базе SharePoint 2013. Продажа

Поиск SharePoint 2013. Ранжирование на основе нейронных сетей

Поиск SharePoint 2013. Ранжирование на основе нейронных сетей

Поиск SharePoint 2013. Кастомная модель ранжирования

Поиск SharePoint 2013. Кастомная модель ранжирования

Поиск SharePoint 2013. Профилирование краулера

Поиск SharePoint 2013. Профилирование краулера

Поиск для сайта на базе SharePoint 2013. Часть 1: robots.txt, sitemap.xml и другие особенности

Поиск для сайта на базе SharePoint 2013. Часть 1: robots.txt, sitemap.xml и другие особенности