Расширение 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, который находится внутри архива с плагинами.
«Дима придумал очень простую и эффективную штуку». -> «Дима и комманда поиска по блогам придумали очень простую и эффективную штуку».
«Заслуга Димы заключается не только в том, что он придумал простое решение проблемы» -> «Заслуга Димы заключается в том, что он мотивировал комманду ППБ сделать то, что они и так очень давно планировали».
На самом деле, когда я пришел к ним с идеей листалки, оказалось, что они ее давно хотят сделать.
Это добро.
Комментарий для coprophagous.ru:
Поправил, спасибо!
Комментарий для sarman.livejournal.com:
Надо себе будет тоже плагин написать.
Комментарий для coprophagous.ru:
Дай, пожалуйста, PunBB. И пива бы попить :)
Ну прям «Господу Богу помолимся!».
Надо только упомянуть о двух недостатках yarss.php
Во-первых, E_STRICT yarss.php не выдерживает, что для коммерческого проекта нонсенс.
Во-вторых, в документации сказано — поддерживает PHPBB, а на самом деле — поддерживает PHPBB на базе данных MySQL, потому что внаглую игнорирует PHPBB встроеннный Database Abstraction Layer и читает все напрямую. По официальным стандартам MOD PHPBB — это безусловный отказ в сертификации. Разобраться в том, как работает этот DBAL, у меня заняло полдня, не больше.
Ну и в-третьих вытекает из второго. Если бы пункт 2 удалось бы решить, можно было бы запаковать этот файл как MOD, что очень упростило бы жизнь в плане обновления и прочего.
Комментарий для leotsarev.livejournal.com:
Для коммерческого, наверное, нонсенс. Наверное, всё дело в том, что проект не коммерческий и в открытых исходниках. И, если что-то не так, то можно писать не русские буквы в комментариях, а латинские в исходниках? ;)
Поправьте и пришлите Диме, все вам скажут спасибо.
Комментарий для Евгения Степанищева:
А че такое E_STRICT?
http://ru2.php.net/manual/ru/errorfunc.constants.php#errorfunc.constants.errorlevels.e-strict
Я-море — это, конечно, круто. Немного круче, правда, было бы использовать atom:link rel=«next/previous», которые не то чтобы стандартны, но на практике вполне используются: http://www.google.ru/search?q=atom%2Blink%2Brel%3Dnext.
Комментарий для david-m.livejournal.com:
Что-то мне подсказывает, что используются они в Atom’e?
Комментарий для david-m.livejournal.com:
Круто не «я-море». Круто — придумать решение, вдохновить людей на его реализацию и написать три плагина к написанным левой ногой движкам, которые видишь впервые в жизни.
(как показывают гугловские примеры,) Используются они где угодно, так же как и 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 ).
еще бы оно UTF поняло — и был бы рай!
Комментарий для Евгения Степанищева:
Что-то мне подсказывает, что Яндекс и Atom проиндексировать может.