Распределенный поисковик YaCy
Что такое распределенный поиск и как работает поисковик YaCy.
Сегодня речь пойдёт о такой специфичной для Web вещи, как поиск по интернетам. Да, все мы безусловно знаем и кошерный Google. Вроде бы — поиск да поиск, что тут такого? Алгоритмы индексации там, все дела — у всех почти всё одинаковое, и кто-то ищет получше, кто-то похуже, а кто-то и вовсе как Яндекс выдаёт на первое место рекламу, и, возможно, проплаченные позиции. Но это лирика. У всех этих поисковых систем есть серьёзный недостаток. Знаете какой? А это фильтрация поиска. Вам дают то, что разрешено искать. Скажем, если вы попытаетесь найти что-то, что в этом поиске запрещено, то он вам ничего не покажет. За примерами я ходить не буду — сами найдите, но факт в том, что поисковики тесно сотрудничают со всеми заинтересованными лицами, и по их требованию/заказу удаляют из индекса массу кошерных вещей. Печально? Таки да, дражайший читатель. И что же делать?
Поисковик YaCy
Я уже не удивлён, что весьма интересные вещи из области технологий децентрализации придуманы в Германии. Стране жареных сосисок, отличного пива, и благоприятной, до некоторых пор, политики иммиграции. Знаете, есть старый такой прикол, и я кажется писал его уже где-то тут, о четырёх правовых моделях: английской — можно всё, кроме того, что нельзя; немецкой — нельзя ничего, кроме того, что можно; французской — можно всё, даже то, чего нельзя; и русской — нельзя ничего, даже то, что можно. Так вот, в странах с наиболее жёсткими моделями, рождаются поистине гениальные решения по обходу «нельзя ничего, кроме…». Да, дражайший читатель, как ты уже возможно догадался — немцы придумали распределённый поиск — распределённый поисковый движок, если точнее. Называется он — YaCy. Работает он по технологии, весьма близкой к торрентам — у каждого пользователя есть локальный поисковый робот, индексатор, база. А также небольшой веб-интерфейс для доступа к результатам поиска. Поисковый робот шарится по интернетам, со ссылки на ссылку, с сайта на сайт, и собирает контент, после чего индексирует его через так называемый Reverse Word Index и складывает в локальную поисковую базу. Плюс данная система относится также и к очень мной любимым оверлеям.
Поиск по DHT
У вас, читатель, наверняка возникли закономерные вопросы, если вы представляете более-менее о чем идёт речь. Например — какого размера будет поисковая база? На самом деле довольно небольшая по современным меркам — она сохраняется в так называемую DHT — распределённую хэш-таблицу. Скажем, если вы выделите под неё 10 гигабайт на жёстком, то при 450 пирах вы получите 4500 гигабайт, или около 4,5 терабайт места под общий индекс. А кто-то ведь выделяет и больше. Так что это уже довольно неплохой результат. Причем, если верить статистике на yacy.net/en — то по 600 человек присоединяется ежемесячно, сеть обслуживает более 130 000 поисковых запросов в сутки, и в индексе находится уже более 1 400 000 000 документов, причем их становится с каждым днём всё больше и больше. Это весьма неплохо для малоизвестного проекта.
А на чем он работает? Работает — т.е. устанавливается и начинает всасывать страницы — он на чём угодно: windows, linux, macos… Это достигнуто за счёт всё той же Java. Yes, YaCy is written on Java. И не надо плеваться — мол, медленно работает, все дела… Если у вас медленно работают ява-программы, то выбрасывайте компьютер, он безнадёжно устарел. Тем более в здравом уме никому не придёт в голову — ставить поисковый движок на нетбук, к примеру. Я вообще в последнее время прихожу к той мысли, что на современные средства разработки плюются в основном снобы, желающие казаться умнее, чем есть. Но в данный момент речь не совсем об этом.
«А где можно посмотреть?». Вообще, к примеру здесь: peer-search.net, но на мой взгляд, интерфейс там оставляет желать лучшего, а алгоритмы не отлажены — очевидно из рашки мало кто участвует в сети, потому англоязычный поиск покамест более корректен. Ещё, если у вас есть I2P, то можете зайти на search.rus.i2p — он работает как раз на YaCy, и по русскому сегменту данного оверлея ищет вполне сносно.
Распределенная поисковая система
Покамест данная поисковая система достаточно мало распространена, у неё небольшой поисковый индекс, она только в процессе становления. Аналогично дела обстоят с алгоритмами поисковыми — часто ищет не то, или просто долго. С другой стороны — это уже на текущий момент отличная альтернатива коммерческому поиску — гугол, яху, Яндекс... По крайней мере это прикольно — иметь поискового робота у себя на компе, и участвовать в глобальной децентрализованной сети — мало ли, вдруг рано или поздно вам потребуется искать контент, которого нет в официальных поисковиках? Так что скачать и попробовать — а вдруг — абсолютно ни к чему не обязывает, даже если вы удалите клиента — сеть не пострадает. В общем, всё можно отменить в любой момент. Между прочим данный движок — распространяется под лицензией GPL, т.е. open source — фактически вы, если что-то смыслите в программировании и есть желание — можете поковыряться в его потрохах, посмотреть как устроен поиск, индексатор, и так далее. Уже одно это доставляет технарям. В общем, вот.
Кстати, добавить кое что забыл — вы можете сами указывать конкретно вас интересующие сайты, проводить по ним индексацию, и так далее — причем эти результаты будут доступны другим пользователям. Вы просто указываете начальные линки, и дальше робот сам всосёт всё, что найдёт по тематике. Например, можно самостоятельно индексировать трекеры, сайты с книгами, и так далее — это в свете недавнего исключения гуглем из поискового индекса некоторых сайтов, по запросу Эксмо. Я прекрасно понимаю эксмошников, но у меня — и не только у меня — также есть свои собственные интересы, которыми я не готов жертвовать.
Свой собственный поисковик на C# на базе PostgreSQL и TsVector
Между прочим, я это всё написал к чему… На ленте появилась интересная новость — про поиск икстремизьма в интернетах, и то, что сие действо доверят роботу. Объявлен тендер на разработку — 15 лямов сие дело стоит, ага. Что любопытно, я перед тем как яси нашёл — тоже писал робота поискового на C#, и некоторые алгоритмы в него заложил даже. В принципе, механизм при наличии вспомогательного софта — например PostgresSQL и TsVector — да даже обычный полнотекстовый поиск решают проблему. По моим прикидкам с таким описанием, и таким функционалом — с работой справится коллектив из 5 программистов за срок от 4 до 6 месяцев. Учитывая среднюю зарплату довольно опытного программёра в 90 к/ мес то вся разработка уложится в 4 ляма + лям-два на откат. А если ещё невозбранно взять имеющиеся наработки, то… В общем, тендер таки выгодное дело. Интересно, а на основе YaCy построить такую систему можно?
Комментарии
Чингачгук
1 мая, 2011 - 19:46
Решил попробовать. Интересно, как по качеству поиск сравнится с тем же duckduckgo?
pomodor
2 мая, 2011 - 00:32
Для начала нужно придумать критерии сравнения качества поиска. И я не уверен, что они вообще могут быть придуманы, ибо тогда народ пользовался бы либо только Гуглем, либо только Яндексом, либо только каким-то другим, но одним поисковиком.
Кстати, смех смехом, но DuckDuckGo все чаще радует своими оригинальными идеями. Например, уточнение смысла поискового запроса. Eсли вписать "Linux", то этот поисковик уточнит что именно юзер имеет ввиду под Линуксом: ядро, операционную систему, дистрибутив или астероид, который назвали Линуксом. :) Сама выдача уже относительно релевантная, правда с русским все еще не очень.
Чингачгук
2 мая, 2011 - 01:02
Гм... Что-то я вот смотрю на поиск с уткой и не пойму - а он распределённый?)) Ну, в плане, по DHT разбрасывает индекс?
Кстати, вот с русским индексом у Yacy вроде нормально всё (по крайней мере на том объёме что он у меня работает - порядка 5 Гб индекс, плюс настройки ранжирования какие-никакие есть), вот только интерфейс англоязычный...
Между прочим, кажется кто-то из разработчиков или просто людей "в теме" в каментах ответствовал, что возможно сделать перевод на русский. Если есть желающие поспособствовать, то можно либо на оф. форуме yacy воспрошать, либо через сайт-источник статьи выше - там в каментах отписать моно :) Я вот только выясню у разработчиков как это делается.
Чингачгук
23 февраля, 2012 - 21:58
Вопрос,как прикрутить статистику посещения к yacy? Где у него сервер?
Чингачгук
24 июня, 2011 - 15:53
Желающим ознакомиться с i2p сетью можно начать ip2.to/status.php. Не забывать после i2p добавлять .to
Чингачгук
13 июня, 2017 - 08:57
Поиск экстримистов говоришь? Что б то тебя кинули козла!
А Яси полнейшая параша. Даже Яндекс находит тысячу страниц, где этот Яси находит 5-6.
Комментировать