О распределённом поиске YaCy, или бороться и искать, найти и не сдаваться.

Сеть YaCy Peer
Сеть YaCy Peer

И таки здравствуйте, дражайший читатель.

Сегодня речь пойдёт о такой специфичной для Web вещи, как поиск по интернетам. Да, все мы безусловно знаем и кошерный Google, и трефной Yandex. А ещё кучу всяких поисков помельче — рамблер, апорт, за рубежом популярен ещё Yahoo. Вроде бы — поиск да поиск, что тут такого? Алгоритмы индексации там, все дела — у всех почти всё одинаковое, и кто-то ищет получше, кто-то похуже, а кто-то и вовсе как яндекс выдаёт на первое место рекламу, и, возможно, проплаченные позиции. Но это лирика. У всех этих поисковых систем есть серьёзный недостаток (при наличии весьма большого числа достоинств). Знаете какой? А это фильтрация поиска. Вам дают то, что разрешено искать. Скажем, если вы попытаетесь найти что-то, что в этом поиске запрещено, то он вам ничего не покажет. За примерами я ходить не буду — сами найдите, но факт в том, что поисковики тесно сотрудничают со всеми заинтересованными лицами, и по их требованию/заказу удаляют из индекса массу кошерных вещей. Печально? Таки да, дражайший читатель. И что же делать?

Я уже не удивлён, что весьма интересные вещи из области технологий децентрализации придуманы в Германии. Стране жареных сосисок, отличного пива, и благоприятной, до некоторых пор, политики иммиграции. Знаете, есть старый такой прикол, и я кажется писал его уже где-то тут, о четырёх правовых моделях: английской — можно всё, кроме того, что нельзя; немецкой — нельзя ничего, кроме того, что можно; французской — можно всё, даже то, чего нельзя; и русской — нельзя ничего, даже то, что можно. Так вот, в странах с наиболее жёсткими моделями (к их числу относится и эта ваша франция, которая, как и все европейские страны, понемногу скатывается к немецкой модели), рождаются поистине гениальные решения по обходу «нельзя ничего, кроме…». Да, дражайший читатель, как ты уже возможно догадался — немцы придумали распределённый поиск — распределённый поисковый движок, если точнее. Называется он — YaCy (читается как ya see). Работает он по технологии, весьма близкой к торрентам — у каждого пользователя (т.н. YaCy Peer’а) есть локальный поисковый робот, индексатор, база. А также небольшой веб-интерфейс для доступа к результатам поиска. Поисковый робот шарится по интернетам, со ссылки на ссылку, с сайта на сайт, и собирает контент, после чего индексирует его через так называемый Reverse Word Index (RWI) и складывает в локальную поисковую базу. Плюс данная система относится также и к очень мной любимым оверлеям.

Децентрализация...
Децентрализация...

У вас, читатель, наверняка возникли закономерные вопросы, если вы представляете более-менее о чем идёт речь. Например — какого размера будет поисковая база? На самом деле довольно небольшая по современным меркам — она сохраняется в так называемую DHT — распределённую хэш-таблицу. Скажем, если вы выделите под неё 10 гигабайт на жёстком (можно и 1, зависит от размеров персональной жабы, но в среднем допустим пусть будет 10), то при 450 пирах (которые отображаются на карте поискового кольца) вы получите 4500 гигабайт, или около 4,5 терабайт места под общий индекс. А кто-то ведь выделяет и больше. Так что это уже довольно неплохой результат. Причем, если верить статистике на http://yacy.net/en/— то по 600 человек присоединяется ежемесячно, сеть обслуживает более 130 000 поисковых запросов в сутки, и в индексе находится уже более 1 400 000 000 документов, причем их становится с каждым днём всё больше и больше (роботы всасывают контент без остановки). Это весьма неплохо для малоизвестного проекта (я подозреваю, вы и не слышали раньше о YaCy, а если и слышали — то пришли сюда как раз почитать, что это такое).

«А на чем он работает»? Работает — т.е. устанавливается и начинает всасывать страницы — он на чём угодно: windows, linux, macos… Это достигнуто за счёт всё той же Java. Yes, YaCy is written on Java :) И не надо плеваться — мол, медленно работает, все дела… Если у вас медленно работают ява-программы, то выбрасывайте компьютер, он безнадёжно устарел. Тем более в здравом уме никому не придёт в голову — ставить поисковый движок на нетбук, к примеру. Я вообще в последнее время прихожу к той мысли, что на современные средства разработки плюются в основном снобы, желающие казаться умнее, чем есть. Но в данный момент речь не совсем об этом.

«А где можно посмотреть?». Вообще, к примеру здесь: http://www.peer-search.net/ но на мой взгляд, интерфейс там уёбищен, а алгоритмы не отлажены (например по слову «Яндекс» он что-то нашёл, а вот «Шпаргалко» уже плюнулся и ругнулся) — очевидно из рашки мало кто участвует в сети, потому англоязычный поиск покамест более корректен. Ещё, если у вас есть I2P (если нет — можете пройти по одной из ссылок внизу заметки и посмотреть что это такое), то можете зайти на search.rus.i2p — он работает как раз на YaCy, и по русскому сегменту данного оверлея ищет вполне сносно.

Выводы.

Покамест данная поисковая сеть достаточно мало распространена, у неё небольшой поисковый индекс, она только в процессе становления. Аналогично дела обстоят с алгоритмами поисковыми — часто ищет не то, или просто долго. С другой стороны — это уже на текущий момент отличная альтернатива коммерческому поиску — гугол, яху, яндекс… По крайней мере это прикольно — иметь поискового робота у себя на компе, и участвовать в глобальной децентрализованной сети — мало ли, вдруг рано или поздно вам потребуется искать контент, которого нет в официальных поисковиках? Так что скачать и попробовать — а вдруг — абсолютно ни к чему не обязывает, даже если вы удалите клиента — сеть не пострадает. В общем, всё можно отменить в любой момент :) Между прочим данный движок — распространяется под лицензией GPL, т.е. open source — фактически вы, если что-то смыслите в программировании и есть желание — можете поковыряться в его потрохах, посмотреть как устроен поиск, индексатор, и так далее. Уже одно это доставляет технарям :) В общем, вот.

UP 28.04.2011. Кстати, добавить кое что забыл — вы можете сами указывать конкретно вас интересующие сайты, проводить по ним индексацию, и так далее — причем эти результаты будут доступны другим пользователям. Вы просто указываете начальные линки, и дальше робот сам всосёт всё, что найдёт по тематике. Например, можно самостоятельно индексировать трекеры, сайты с книгами, и так далее — это в свете недавнего исключения гуглем из поискового индекса некоторых сайтов, по запросу Эксмо. Я прекрасно понимаю эксмошников, но у меня — и не только у меня — также есть свои собственные интересы, которыми я не готов жертвовать.

Эпилог.

Между прочим, я это всё написал к чему… На ленте появилась интересная новость — про поиск икстремизьма в интернетах, и то, что сие действо доверят роботу. Объявлен тендер на разработку — 15 лямов сие дело стоит, ага. Вот. Что любопытно, я перед тем как яси нашёл — тоже писал робота поискового на C#, и некоторые алгоритмы в него заложил даже. В принципе, механизм при наличии вспомогательного софта — например PostgresSQL и TsVector — да даже обычный полнотекстовый поиск (или сразу засасывание в БД по ключевикам — тот же тезаурус) решают проблему. По моим прикидкам с таким описанием (прямо скажем — бедненьким), и таким функционалом — с работой справится коллектив из 5 программистов за срок от 4 до 6 месяцев. Учитывая среднюю зарплату довольно опытного программёра в 90 к/ мес (при расходах предприятия на него — сумма з.п. + 34% — это около 120 килорублей за месяц он стоит) то вся разработка уложится в 4 ляма + лям-два на откат. А если ещё невозбранно взять имеющиеся наработки, то… :) В общем, тендер таки выгодное дело :) Интересно, а на основе YaCy построить такую систему можно?)))

Автор

Алекс Разгибалов

Сумасшедший мужчина, неопределённого возраста, наслаждающийся манией преследования. Паталогически недоверчив, эгоистичен, авторитарен. Вторичные диагнозы - программист и поц. Владеет английским языком на уровне около хренового разговорного. Также знаком с некоторыми другими языками. Интересуется всем и вся, за счёт чего в любой области знания являются поверхностными, неглубокими. Характер невыдержанный. Крепость - 55 градусов.

О распределённом поиске YaCy, или бороться и искать, найти и не сдаваться.: 12 комментариев

  1. Опубликовал ваш пост здесь. Изменений не вносил, дабы сохранить неповторимый авторский стиль. Только убрал одно крепкое словцо и вместо него вставил более мягкую фразу. )

      1. Неа)) Ну, точнее, по тому, что в индексе вообще есть — выдача в принципе нормальная. В гугле всё равно по общим вещам объём индекса в стопиццот раз больше. Опять таки, как поиск под проект YaCy не подходит — там правильнее и проще юзать Sphinx или нечто вроде него. Потому и пользуюсь «Иногда»

      2. Таки Ваше заключение каково: поиск будущего или ненужник?)))

      3. Сложно сказать. Понимаете в чем дело — это система-велосипед, на мой взгляд. Т.е. разработка yacy «С блекджеком и шлюхами» вынуждена пройти все те вехи, которые уже пройдены разработчиками других продуктов. Скажем, индексация и ранжирование выдачи — с этим чудесно справляется sphinx. Но он не p2p. Хранение данных в размазанном виде — tahoe-lafs. Предварительная (до скармливания индексатору) обработка документов — handoop. Написание краулера вообще тривиальнейшая задача, которую я сам решал пару лет назад — вполне работоспособный многопоточный робот был написан на C# буквально за 2 дня, с периодичным обходом документов в индексе. По сути, можно было бы здорово сэкономить время, взяв эти, по большей части бесплатные open-source решения, и увязать их в модульную ортогональную структуру, сосредоточившись на повышении качества взаимодействия с пользователм, т.е. юзабилити, а также API для развёртки кастомного фронта сервиса поиска.

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Собирать идеально - не обязательно, просто приблизительно соберите картинку (должен быть включен JavaScript).WordPress CAPTCHA