микроформаты, yahoo, searchmonkey

Недавняя статья Юрия Артюха «G-club, микроформаты и дизайн» сподвигла меня оценить возможности Yahoo SearchMonkey — инициативы поисковика по улучшению результатов поиска. Точнее, улучшается не релевантность поиска, а отображение его результатов. Обычно гугл и яху показывают в основной ссылке содержимое title страницы, а сниппетом — meta description или кусок текста, окружающий искомые слова на странице. SearchMonkey позволяет увеличить число элементов, и показывать картинку, несколько релевантных ссылок, несколько пар ключ-значение для каждого результата поиска, как это видно на на примере у Юрия. Естественно, только на страницах самого Yahoo.

Этот результат достигается за два шага, не считая регистрации на Yahoo (что само по себе непростая задача, которую я решил только выбором ника mi4qcjho ;)

Первый шаг: создание для конкретного сайта или множества страниц нового Data Service — способа извлечь из страницы чистые данные. Если сайт делается прогрессивным разработчиком, и уже использует микроформаты типа hCard или XFN, то этот шаг можно пропустить, потому что для микроформатов есть готовые Data Service. В противном случае придётся немного напрячь мозги над несложным XSLT, извлекающим значимый текст. Для этого на странице Application Dashboard нужно кликнуть ссылку «Create a new data service», задать название сервиса и адреса тестовых страниц, и потом заняться собственно кодом. Поскольку у нас на mirtesen.ru hCard временно сломан, мне пришлось пойти сложным путём, и изобразить вот это:

<item rel="rel:Name" resource="{//h1/span}"></item>
<item rel="rel:Nickname" resource="{//span[@class='nickname']}"></item>
<item rel="rel:Birthday" resource="{//span[@class='bday']}"></item>
<item rel="rel:Photo" resource="{//img[@id='photo_for_preview']/@src}"></item>
<item rel="rel:Interests" resource="{//p[@class='tags']}"></item>
<item rel="rel:Description" resource="{//li[@class='birthday']/following-sibling::li[last()]}"></item>

Очевидно, что такой код извлекает из страницы имя человека, его ник, фото, день рождения, интересы и самоописание. Кстати, очень удобно в процессе работы использовать отладчик внизу страницы, даже несмотря на его серьёзные тормоза.

Второй шаг — это собственно настройка того, что вы хотите показывать в результатах поиска. Для этого на странице Application Dashboard нужно кликнуть ссылку «Create a New Application», ввести очевидные метаданные приложения, и опять ввести тестовые адреса. Затем нужно выбрать, какие Data Service вы собираетесь использовать в своём приложении. Яху предлагает несколько своих стандартных, включая и микроформаты, но мне пришлось нажать «Add More Data Services» и добавить только что созданный сервис. И на следующей странице я, наконец, взялся за оформление. Оно задаётся с помощью — сюрприз! — кода на PHP. Конечно, запустить шаловливые ручки в HTML не дадут, и PHP используется только для примитивной обработки данных. Тут я исследовал ещё не все возможности, потому что пошёл по стандартному пути, подсказанном примером кода. Я указал, что будет текстом ссылки, какая фотография релевантна этой странице, добавил несколько контекстных ссылок и отдельных полей. Соответствующие конкретному результату поиска данные предоставляются теми самыми Data Services, которые выбраны для этого приложения: их поля находятся справа от textarea, и простым кликом вставляются туда, где стоит курсор. Получается что-то вроде этого:

$ret['title'] = Data::get('smid:n8t/rel:Name/@resource');
$ret['image']['src'] = 'http://mirtesen.ru' . Data::get('smid:n8t/rel:Photo/@resource');
$ret['dict'][0]['key'] = 'Интересы';
$ret['dict'][0]['value'] = Data::get('smid:n8t/rel:Interests/@resource');

Опять-таки внизу страницы есть тормозной, но полезный отладчик. Правда, здесь он ещё и глючит, если параллельно редактировать Data Service и само приложение, но терпение и труд всё перетрут. Готовое приложение можно сохранить, добавить в общий каталог, и начать использовать самому. Вот приложение для mirtesen.ru, которое получилось у меня.

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

Артемий Трегубенко,
,

comments powered by Disqus