Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Расширение RSS: «Яндекс», поиск по блогам

«Яндекс» выпустил специальный RSS-плагин к популярным PHP-форумам для сервиса «Поиск по блогам». Автор — известный PHP-программист Дима Смирнов. На медленно стухающей «Хабре» немедленно появились те, кто «не читал, но обсуждают».

В чём же заключается смысл плагина? Поскольку я в курсе, давайте расскажу.

Сервис поиска по блогам «Яндекса», как вытекает из названия, индексирует блоги и многим кажется, что на этом его отличие от основного поиска заканчивается. Как бы не так! Поисковик «Яндекса» индексирует HTML-страницы, поисковик поиска по блогам индексирует RSS, а в RSS сайты отдают какое-то небольшое количество последних постов.

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

Дима с командой поиска по блогам придумали очень простую и эффективную штуку. RSS — формат расширяемый, для него уже масса расширений, это нормальная практика. Если заглянуть в RSS любого диминого сайта, то можно увидеть, что в нём упоминается новое расширение: «ya:more», т. е. новый тег «more» в пространстве имён «ya».

Для того, чтобы его использовать, в тег «rss» нужно дописать строку

xmlns:ya="http://blogs.yandex.ru/"

и вставить тег «ya:more», содержащий URL, указывающий на RSS, содержащий предыдущие N постов:

<rss xmlns:ya="http://blogs.yandex.ru/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
<ya:more>http://coprophagous.ru/rss/posts/740</ya:more>

Получается много связанных этим тегом документов, в последнем из которых тег «ya:more» отсутствует. Таким образом индексатор поиска по блогам может пройтись по всем постам блога и проиндексировать их. СЕОшники должны оценить.

Заслуга Димы заключается не только в том, что он придумал простое решение проблемы и мотивировал команду поиска реализовать её, но ещё и в том, что он написал готовые плагины, которые добавляют эту функциональность для трёх популярных форумов на языке PHP: PHPBB, vBulletin и IP.Board.

Кроме этого, формат позволяет индексировать и комментарии к записям, в том числе и древовидные. Подробнее об этом можно прочитать в файле readme.html, который находится внутри архива с плагинами.

16 комментариев
coprophagous.ru 2008

«Дима придумал очень простую и эффективную штуку». -> «Дима и комманда поиска по блогам придумали очень простую и эффективную штуку».

«Заслуга Димы заключается не только в том, что он придумал простое решение проблемы» -> «Заслуга Димы заключается в том, что он мотивировал комманду ППБ сделать то, что они и так очень давно планировали».

На самом деле, когда я пришел к ним с идеей листалки, оказалось, что они ее давно хотят сделать.

sarman.livejournal.com 2008

Это добро.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для coprophagous.ru:

Поправил, спасибо!

Евгений Степанищев (bolknote.ru) 2008

Комментарий для sarman.livejournal.com:

Надо себе будет тоже плагин написать.

skurudo (pavel.galkin.su) 2008

Комментарий для coprophagous.ru:

Дай, пожалуйста, PunBB. И пива бы попить :)

myxolove.blogspot.com 2008

Ну прям «Господу Богу помолимся!».

leotsarev.livejournal.com 2008

Надо только упомянуть о двух недостатках yarss.php
Во-первых, E_STRICT yarss.php не выдерживает, что для коммерческого проекта нонсенс.
Во-вторых, в документации сказано — поддерживает PHPBB, а на самом деле — поддерживает PHPBB на базе данных MySQL, потому что внаглую игнорирует PHPBB встроеннный Database Abstraction Layer и читает все напрямую. По официальным стандартам MOD PHPBB — это безусловный отказ в сертификации. Разобраться в том, как работает этот DBAL, у меня заняло полдня, не больше.
Ну и в-третьих вытекает из второго. Если бы пункт 2 удалось бы решить, можно было бы запаковать этот файл как MOD, что очень упростило бы жизнь в плане обновления и прочего.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для leotsarev.livejournal.com:

Для коммерческого, наверное, нонсенс. Наверное, всё дело в том, что проект не коммерческий и в открытых исходниках. И, если что-то не так, то можно писать не русские буквы в комментариях, а латинские в исходниках? ;)

Поправьте и пришлите Диме, все вам скажут спасибо.

coprophagous.ru 2008

Комментарий для Евгения Степанищева:

А че такое E_STRICT?

david-m.livejournal.com 2008

Я-море — это, конечно, круто. Немного круче, правда, было бы использовать atom:link rel=«next/previous», которые не то чтобы стандартны, но на практике вполне используются: http://www.google.ru/search?q=atom%2Blink%2Brel%3Dnext​.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для david-m.livejournal.com:

Что-то мне подсказывает, что используются они в Atom’e?

Евгений Степанищев (bolknote.ru) 2008

Комментарий для david-m.livejournal.com:

Круто не «я-море». Круто — придумать решение, вдохновить людей на его реализацию и написать три плагина к написанным левой ногой движкам, которые видишь впервые в жизни.

david-m.livejournal.com 2008

(как показывают гугловские примеры,) Используются они где угодно, так же как и ya:more, ибо XML велик.

<rss version=«2.0» xmlns:atom=» http://www.w3.org/2005/Atom%22%3E
<atom:link rel=«next» href=«my://feed?page=2» />

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

С «круто» — я согласен, что без реализации никакая идея ничего не стоит, и в этом смысле плагин безусловно положительная штука. И уж точно один новый xml-элемент — это ГОРАЗДО лучше чем тот шедевр самостийности, который нам предлагается для яндекс-картинок ( http://images.yandex.ru/xml-import.html ).

Az (shitdesign.ru) 2008

еще бы оно UTF поняло — и был бы рай!

LXj (lxj.endofinternet.net) 2008

Комментарий для Евгения Степанищева:

Что-то мне подсказывает, что Яндекс и Atom проиндексировать может.