YaCy: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Ссылки: по названию основной статьи, replaced: росс-платформ → россплатформ
м Бот: замена категории Распределенное хранение данных на Распределённое хранение данных
 
(не показано 14 промежуточных версий 10 участников)
Строка 1: Строка 1:
{{не путать|YaC|ежегодной конференцией российской компании «Яндекс»}}
{{не путать|YaC|ежегодной конференцией российской компании «Яндекс»}}
{{Infobox software
{{Infobox software
| screenshot = Yacy-buscador.png
| name = YaCy
| developer = Сообщество YaCy
| logo = YaCy logo.png
| operating system = [[Кроссплатформенное ПО]]
| screenshot = Yacy-buscador.png
| последняя версия = 1.924
| caption =
| дата последней версии = 9 февраля 2021
| autor = [[Michael Christen]]
| genre = [[Оверлейная сеть]], [[Поисковая система]]
| developer = комьюнити YaCy
| latest release version = 1.92
| latest release date = {{start date and age|2016|12|26}}
| operating system = [[Кроссплатформенное ПО]]
| programming_language = [[Java]]
| genre = [[Оверлейная сеть]], [[Поисковая система]]
| license = [[GNU General Public License|GPL]]
| website = http://yacy.net/
}}
}}


'''YaCy''' (от {{lang-en|Yet another Cyberspace}}, ''Ещё одно Киберпространство''; созвучно с {{lang-en|Ya see}}) — [[Свободное программное обеспечение|свободно распространяемая]] децентрализованная [[поисковая система]], построенная по принципу [[одноранговая сеть|одноранговой сети]] (P2P). Есть версии для Windows, Linux, MacOSX. Основной [[Компьютерная программа|программный модуль]], написанный на [[Java]], функционирует на нескольких тысячах компьютеров (по состоянию на 2011 год) участников сети YaCy. Каждый участник проекта независимо [[поисковый робот|исследует]] Интернет, анализируя и индексируя найденные страницы и складывает результаты индексирования в общую базу данных (так называемый индекс), который совместно используется всеми пользователями YaCy по принципу P2P.
'''YaCy''' (от {{lang-en|Yet another Cyberspace}}, ''Ещё одно Киберпространство''; созвучно с {{lang-en|Ya see}}) — [[Свободное программное обеспечение|свободно распространяемая]] децентрализованная [[поисковая система]], построенная по принципу [[одноранговая сеть|одноранговой сети]] (P2P). Есть версии для Windows, Linux, MacOSX. Основной [[Компьютерная программа|программный модуль]], написанный на [[Java]], функционирует на нескольких тысячах компьютеров (по состоянию на 2011 год) участников сети YaCy. Каждый участник проекта независимо [[поисковый робот|исследует]] Интернет, анализируя и индексируя найденные страницы, и складывает результаты индексирования в общую базу данных (так называемый индекс), который совместно используется всеми пользователями YaCy по принципу P2P.


В отличие от частично распределённых поисковых систем, сеть YaCy характеризуется децентрализованной архитектурой. Все узлы эквивалентны и отсутствует центральный [[Сервер (программное обеспечение)|сервер]]. Программа может работать в режиме поискового робота или в качестве локального [[прокси-сервер]]а, индексируя страницы, посещаемые пользователем (при этом игнорируются страницы с признаками персональных данных — cookies и т. п.).
В отличие от частично распределённых поисковых систем, сеть YaCy характеризуется децентрализованной архитектурой. Все узлы эквивалентны и отсутствует центральный [[Сервер (программное обеспечение)|сервер]]. Программа может работать в режиме поискового робота или в качестве локального [[прокси-сервер]]а, индексируя страницы, посещаемые пользователем (при этом игнорируются страницы с признаками персональных данных — cookies и т. п.).
Строка 22: Строка 15:
Доступ к функциям поиска обеспечивается за счёт локально запущенного веб-сервера, который генерирует поисковую страницу с полем для ввода поисковых запросов и возвращает результаты поиска в том же формате, что и другие популярные поисковые системы.
Доступ к функциям поиска обеспечивается за счёт локально запущенного веб-сервера, который генерирует поисковую страницу с полем для ввода поисковых запросов и возвращает результаты поиска в том же формате, что и другие популярные поисковые системы.


Программа распространяется под лицензией [[GNU General Public License|GPL]]. Проект поддерживает европейское отделение [[фонд свободного программного обеспечения|фонда свободного программного обеспечения]] (FSFE).<ref>[http://fsfe.org/news/2011/news-20111128-01.en.html Web Search By The People, For The People: YaCy 1.0]</ref>
Программа распространяется под лицензией [[GNU General Public License|GPL]]. Проект поддерживает европейское отделение [[фонд свободного программного обеспечения|фонда свободного программного обеспечения]] (FSFE).<ref>{{Cite web |url=http://fsfe.org/news/2011/news-20111128-01.en.html |title=Web Search By The People, For The People: YaCy 1.0 |access-date=2011-12-14 |archive-date=2011-11-30 |archive-url=https://web.archive.org/web/20111130225305/http://fsfe.org/news/2011/news-20111128-01.en.html |deadlink=no }}</ref>


Проект YaCy был основан Михаэлем Кристеном ({{lang-de|Michael Christen}}) в 2003 году.
Проект YaCy был основан Михаэлем Кристеном ({{lang-de|Michael Christen}}) в 2003 году.
Строка 30: Строка 23:
=== Преимущества ===
=== Преимущества ===
* Совместный поиск может быть осуществлён с YaCy практически всегда: всегда есть часть сети, которая будет доступна.
* Совместный поиск может быть осуществлён с YaCy практически всегда: всегда есть часть сети, которая будет доступна.
* Интернет-пользователи поисковика YaCy независимы от компаний, их рейтинга (который надо заработать) и их цензуры. Рейтинг страниц рассчитывается на ищущем узле.{{нет АИ|28|07|2014}}
* Интернет-пользователи поисковика YaCy независимы от компаний, их рейтинга и их цензуры.
* Программное обеспечение с [[открытый исходный код|открытым исходным кодом]], распространяется по лицензии [[GNU GPL]] и является бесплатным.
* Программное обеспечение с [[открытый исходный код|открытым исходным кодом]], распространяется по лицензии [[GNU GPL]] и является бесплатным.
* При использовании прокси‐сервера клиента он может просканировать страницы из [[Глубокая паутина|глубокой паутины]] или неиндексированных сетей общего пользования (таких, как [[I2P]]), которые не могут быть проиндексированными обычными поисковыми роботами, такими как в Google, Yahoo или Bing.
* При использовании прокси‐сервера клиента он может просканировать страницы из [[Глубокая паутина|глубокой паутины]] или неиндексированных сетей общего пользования (таких, как [[I2P]]), которые не могут быть проиндексированными обычными поисковыми роботами, такими как в Google, Yahoo или Bing.
Строка 37: Строка 30:


=== Недостатки ===
=== Недостатки ===
* [[Спам]]еры, теоретически, могут запускать свои узлы, возвращающие спам в качестве результата. Поэтому клиент имеет функцию проверки страниц на наличие искомого текста.<ref name="1.01">[http://blog.yacy-websuche.de/2011/12/07/yacy-bugfix-release-1-01-with-new-community-contributions/ YaCy Bugfix Release 1.01 With New Community Contributions<!-- Заголовок добавлен ботом -->]</ref>
* [[Спам]]еры, теоретически, могут запускать свои узлы, возвращающие спам в качестве результата. Поэтому клиент имеет функцию проверки страниц на наличие искомого текста.<ref name="1.01">{{Cite web |url=http://blog.yacy-websuche.de/2011/12/07/yacy-bugfix-release-1-01-with-new-community-contributions/ |title=YaCy Bugfix Release 1.01 With New Community Contributions<!-- Заголовок добавлен ботом --> |access-date=2012-03-06 |archive-date=2012-02-12 |archive-url=https://web.archive.org/web/20120212155439/http://blog.yacy-websuche.de/2011/12/07/yacy-bugfix-release-1-01-with-new-community-contributions/ |deadlink=no }}</ref>
* Из‐за того, что YaCy необходимо связаться с другими узлами для запроса и из‐за упомянутой выше (необязательной) проверки достоверности результатов поиск занимает больше времени, чем в традиционных поисковых системах.<ref name="1.01" />
* Из‐за того, что YaCy необходимо связаться с другими узлами для запроса и из‐за упомянутой выше (необязательной) проверки достоверности результатов поиск занимает больше времени, чем в традиционных поисковых системах.<ref name="1.01" />
* Главный клиент не ищет различные формы слов.
* Главный клиент не ищет различные формы слов.
* Протокол YaCy организован с использованием индивидуальных [[Hypertext Transfer Protocol|HTTP]]-запросов, что влечёт за собой бо́льшие задержки, чем при использовании [[User Datagram Protocol|UDP]] или [[Transmission Control Protocol|TCP]] с постоянным подключением.
* Протокол YaCy организован с использованием индивидуальных [[Hypertext Transfer Protocol|HTTP]]-запросов, что влечёт за собой бо́льшие задержки, чем при использовании [[User Datagram Protocol|UDP]] или [[Transmission Control Protocol|TCP]] с постоянным подключением.
* Главный клиент написан на Java и в существующей реализации работает медленно. С ростом объёма локального индекса значительно растёт потребление памяти и снижается скорость работы. Проверка локальной БД объёмом ~20 Гб может занять несколько секунд, до того, как запрос будет отправлен другим пирам.
* Главный клиент написан на Java и, в существующей реализации, работает медленно. С ростом объёма локального индекса значительно растёт потребление [[Оперативная память|памяти]] и снижается скорость работы. Проверка локальной БД объёмом ~20 Гб может занять несколько секунд, до того, как запрос будет отправлен другим пирам.
* В общественной сети «freeworld» для поиска по Всемирной паутине в настоящее время представлено относительно мало «активных» «старших» узлов (хранящих накопленный поисковый индекс и отвечающих на поисковые запросы от других узлов), и они могут выдать относительно немного результатов по сравнению с крупными поисковыми машинами. На один узел приходится до нескольких десятков миллионов записей, поэтому их полное перемещение между узлами занимает значительное время, и резкое выключение или добавление значительного количества узлов может временно ухудшить качество сети для некоторых поисковых запросов, как это произошло после выпуска версии 1.0 в ноябре 2011 года, когда количество участников быстро увеличилось примерно до 4000<ref name="1.01" /> или 1000<ref>[https://web.archive.org/web/20120805004556/http://www.yacystats.de/network,overviewyear.html Статистика по количеству: график за 2011 год.]</ref>. В начале марта 2012 года «активными» были около 1/6 одновременно работавших узлов.<!-- 2012-03-09: Active: 265, Potential: 2882, Passive: 1368. Может быть, когда 350—400, по-другому. -->
* В общественной сети «freeworld» для поиска по Всемирной паутине в настоящее время представлено относительно мало «активных» «старших» узлов (хранящих накопленный поисковый индекс и отвечающих на поисковые запросы от других узлов), и они могут выдать относительно немного результатов по сравнению с крупными поисковыми машинами. На один узел приходится до нескольких десятков миллионов записей, поэтому их полное перемещение между узлами занимает значительное время, и резкое выключение или добавление значительного количества узлов может временно ухудшить качество сети для некоторых поисковых запросов, как это произошло после выпуска версии 1.0 в ноябре 2011 года, когда количество участников быстро увеличилось примерно до 4000<ref name="1.01" /> или 1000<ref>[https://web.archive.org/web/20120805004556/http://www.yacystats.de/network,overviewyear.html Статистика по количеству: график за 2011 год.]</ref>. В начале марта 2012 года «активными» были около 1/6 одновременно работавших узлов.<!-- 2012-03-09: Active: 265, Potential: 2882, Passive: 1368. Может быть, когда 350—400, по-другому. -->


== Программа ==
== Программа ==
Ядро поиска отличается от других поисковых систем — это не центральный сайт, а [[компьютерная программа]], которая работает в различных [[операционная система|операционных системах]]. Поиск ведётся на локальном веб-сайте, который работает с помощью установленной программы. Отображение результатов обычно происходит в виде [[веб-страницы]].
Ядро поиска отличается от других поисковых систем — это не центральный сервер, а [[компьютерная программа|программа]]-клиент [[Одноранговая сеть|одноранговой сети]], которая работает на множестве компьютеров одновременно. Результаты поиска отображаются в виде web-страницы на локальном [[Сайт|web-сайте]], который также играет роль web-интерфейса для настройки поисковой системы под нужды пользователя.


В сочетании с дополнительными [[P2P]]-системами используется [[Прокси-сервер|прокси]], который автоматически индексирует посещённые страницы. Индексирование не производится в тех случаях, когда данные передаются через GET или POST, или же используются [[HTTP cookie|куки]] (cookies) или [[HTTP-аутентификация|HTTP-аутентификации]] (например, страницы входящие в определённую запароленную зону).<ref>[http://www.yacy-websearch.net/wiki/index.php/Uk:Privacy Uk:Privacy — YaCyWiki<!-- Заголовок добавлен ботом -->]{{Недоступная ссылка|date=Сентябрь 2018 |bot=InternetArchiveBot }}</ref> Тем самым гарантируется, что действительно индексируются только доступные для общественности данные.
В сочетании с дополнительными [[P2P]]-системами используется [[Прокси-сервер|прокси]], который автоматически индексирует посещённые страницы. Индексирование не производится в тех случаях, когда данные передаются через GET или POST, или же используются [[HTTP cookie|куки]] (cookies) или [[HTTP-аутентификация|HTTP-аутентификации]] (например, страницы, входящие в определённую запароленную зону).<ref>[http://www.yacy-websearch.net/wiki/index.php/Uk:Privacy Uk:Privacy — YaCyWiki<!-- Заголовок добавлен ботом -->]{{Недоступная ссылка|date=2018-09|bot=InternetArchiveBot }}</ref> Тем самым гарантируется, что действительно индексируются только доступные для общественности данные.


== Другие функции ==
== Другие функции ==
* YaCy обеспечивает всех пользователей прокси-функцией, которая позволяет также подключаться к другим узлам по адресу ИМЯУЗЛА.yacy или ИМЯХЭША.yacyh. www.ИМЯУЗЛА.yacy может быть главной страницей пользователя, под share.ИМЯУЗЛА.yacy находится файлообменник, а ИМЯУЗЛА.yacy это стандартный интерфейс доступа. Другие [[поддомен]]ы могут быть специально созданы путём создания папки с именем поддомена. [[Динамический DNS]] не поддерживается.
* YaCy обеспечивает всех пользователей прокси-функцией, которая позволяет также подключаться к другим узлам по адресу ИМЯУЗЛА.yacy или ИМЯХЭША.yacyh. www.ИМЯУЗЛА.yacy может быть главной страницей пользователя, под share.ИМЯУЗЛА.yacy находится файлообменник, а ИМЯУЗЛА.yacy это стандартный интерфейс доступа. Другие [[поддомен]]ы могут быть специально созданы путём создания папки с именем поддомена. [[Динамический DNS]] не поддерживается.
* Кроме .yacy-[[Доменное имя|домена]], YaCy предоставляет возможность создавать домашнюю страницу и папки, которые могут быть связаны с текущим IP или адресом [[Динамический DNS|динамического DNS]] и доступны для не YaCy пользователей.
* Кроме .yacy-[[Доменное имя|домена]], YaCy предоставляет возможность создавать домашнюю страницу и папки, которые могут быть связаны с текущим IP или адресом [[Динамический DNS|динамического DNS]] и доступны для не YaCy пользователей.
* YaCy имеет встроенную функцию передачи сообщений с помощью которой можно отправлять текстовые сообщения (с форматированием вики), и, в зависимости от настройки приёмника, также отправлять файлы.
* YaCy имеет встроенную функцию передачи сообщений с помощью которой можно отправлять текстовые сообщения (с форматированием вики), а также передавать файлы.
* YaCy имеет встроенные [[вики]] и [[блог]].
* YaCy имеет встроенные [[вики]] и [[блог]].
* Есть управление закладками, которые могут быть общедоступными и личными.
* Есть управление закладками, которые могут быть общедоступными и личными.
* Есть возможность внесения отдельных областей в чёрные списки.
* Есть возможность внесения отдельных областей в чёрные списки.
* Есть [[OpenSearch]]-интерфейс. Каждый узел обеспечивает доступность его по адресу <nowiki>http://<адрес-узла>:<порт-узла>/opensearchdescription.xml</nowiki>, например https://web.archive.org/web/20120602233757/http://sciencenet.fzk.de:8080/opensearchdescription.xml . Чтобы добавить вашу персональную поисковую систему YaCy в список поисковых систем Firefoxa нужно открыть этот XML файл в браузере и сохранить его в папку «searchplugins», а затем перезапустить Firefox.
* Есть [[OpenSearch]]-интерфейс. Каждый узел обеспечивает доступность его по адресу <nowiki>http://<адрес-узла>:<порт-узла>/opensearchdescription.xml</nowiki>, например https://web.archive.org/web/20120602233757/http://sciencenet.fzk.de:8080/opensearchdescription.xml . Чтобы добавить вашу персональную поисковую систему YaCy в список поисковых систем Firefox-a нужно открыть этот XML файл в браузере и сохранить его в папку «searchplugins», а затем перезапустить Firefox.


== Технология ==
== Технология ==
Программа основана на веб-сервере, который также является [[кэш]]ирующим-[[Прокси-сервер|прокси]]. Пользователь веб-сервера может получить доступ к оболочке поиска и управления своим собственным узлом. Прокси имеет общий код со сканером, а это значит, что все посещённые через него страницы, которые не являются личными, по умолчанию автоматически записываются в индекс. Кроме того, YaCy предоставляет собственный [[Доменное имя|домен]] в YaCy-сети, который доступен через прокси-сервер. Для поиска в YaCy интегрированы Solr и [[Lucene]] (для версии 1.6 это версии 4.3)
Программа основана на веб-сервере, который также является [[кэш]]ирующим [[Прокси-сервер|прокси]]. Пользователь веб-сервера может получить доступ к оболочке поиска и управления своим собственным узлом. Прокси имеет общий код со сканером, а это значит, что все посещённые через него страницы, которые не являются личными, по умолчанию автоматически записываются в индекс. Кроме того, YaCy предоставляет собственный [[Доменное имя|домен]] в YaCy-сети, который доступен через прокси-сервер. Для поиска в YaCy интегрированы Solr и [[Lucene]] (для версии 1.6 это версии 4.3)


=== Распределённый индекс ===
=== Распределённый индекс ===
В отличие от файлообменных сервисов результаты P2P-поиска должны быть доступны немедленно. Чтобы достигнуть этого YaCy использует [[DHT|распределённую хеш-таблицу]] (DHT). Это означает, что все распознанные программой [[URL]]-адреса и слова отправляются к узлам, которые подходят для хранения соответствующих контрольных сумм слов, узлов или ссылок. При поиске всё работает наоборот: поиск происходит только по узлам, подходящим для хранения хешей URL-адреса для этого слова.
В отличие от файлообменных сервисов, результаты P2P-поиска должны быть доступны немедленно. Чтобы достигнуть этого, YaCy использует [[DHT|распределённую хеш-таблицу]] (DHT). Это означает, что все распознанные программой [[URL]]-адреса и слова отправляются к узлам, которые подходят для хранения соответствующих контрольных сумм слов, узлов или ссылок. При поиске всё работает наоборот: поиск происходит только по узлам, подходящим для хранения хешей URL-адреса для этого слова.


Таким образом, для получения результатов задействуется только часть узлов.
Таким образом, для получения результатов задействуется только часть узлов.
Строка 70: Строка 63:


; Новичок
; Новичок
: Эти узлы не могут быть найдены, потому что новичок не имеет связи с сетью. Таким образом, вы видите только себя, если узел новичок.
: Эти узлы не могут быть найдены, потому что новичок не имеет связи с сетью. Таким образом, вы видите только себя, если узел - новичок.
; Младший
; Младший
: Узел находится за [[Межсетевой экран|файрволом]]. Другие относят его к ''младшим'' или ''потенциальным'' узлам,<ref name="network.html">/Network.html</ref> они видят только последний его запрос и у них нет способа определить, находится ли он до сих пор в сети.
: Узел находится за [[Межсетевой экран|файрволом]]. Другие относят его к ''младшим'' или ''потенциальным'' узлам,<ref name="network.html">/Network.html</ref> они видят только последний его запрос и у них нет способа определить, находится ли он до сих пор в сети.
Строка 82: Строка 75:


=== Начальная загрузка ===
=== Начальная загрузка ===
При начальной загрузке узел пытается связаться с другими узлами YaCy-сети. Сначала ищутся списки узлов. Первый адрес в superseed.txt служит для загрузки устойчивых YaCy-узлов. seeds.txt является ссылками на другие узлы, таким образом устанавливается контакт с YaCy-сетью. В следующий раз, когда вы запустите YaCy, gebootstrapt создаётся из известных с предыдущего запуска узлов сети. В дальнейшем списки узлов будут необходимы только когда большинство старых ссылок будут не доступны.
При начальной загрузке узел пытается связаться с другими узлами YaCy-сети. Сначала ищутся списки узлов. Первый адрес в superseed.txt служит для загрузки устойчивых YaCy-узлов. seeds.txt является ссылками на другие узлы, таким образом устанавливается контакт с YaCy-сетью. В следующий раз, когда вы запустите YaCy, gebootstrapt создаётся из известных с предыдущего запуска узлов сети. В дальнейшем списки узлов будут необходимы, только когда большинство старых ссылок будет недоступно.


== См. также ==
== См. также ==
Строка 99: Строка 92:


== Ссылки ==
== Ссылки ==
{{Портал|Свободное программное обеспечение}}
* [http://yacy.net/ Веб-сайт YaCy]
* [http://yacy.net/ Веб-сайт YaCy]
* [http://search.yacy.net/ Поисковая система YaCy]
* [http://search.yacy.net/ Поисковая система YaCy]
Строка 111: Строка 103:
* {{cite news|url=http://www.osp.ru/news/2011/1129/13010408/|title=Сторонники свободного ПО строят распределенную поисковую систему|date=2011-11-29|publisher=[[Открытые системы (издательство)|Издательство «Открытые системы»]]|accessdate=2011-12-15}}
* {{cite news|url=http://www.osp.ru/news/2011/1129/13010408/|title=Сторонники свободного ПО строят распределенную поисковую систему|date=2011-11-29|publisher=[[Открытые системы (издательство)|Издательство «Открытые системы»]]|accessdate=2011-12-15}}


{{внешние ссылки}}
{{Внешние ссылки}}
{{Поисковые машины}}
{{Поисковые машины}}
{{Анонимные сети}}
{{Анонимные сети}}


<!-- не только серверное -->
<!-- просто дополнительная функция -->

[[Категория:Свободное сетевое программное обеспечение]]
[[Категория:Свободные веб-серверы]]
[[Категория:Анонимные сети]]
[[Категория:Анонимные сети]]
[[Категория:Распределённые вычисления]]
[[Категория:Распределённые вычисления]]
Строка 121: Строка 118:
[[Категория:Кроссплатформенное программное обеспечение]]
[[Категория:Кроссплатформенное программное обеспечение]]
[[Категория:Программное обеспечение с лицензией GNU GPL]]
[[Категория:Программное обеспечение с лицензией GNU GPL]]
[[Категория:Свободное сетевое программное обеспечение]]<!-- не только серверное -->
[[Категория:Свободное серверное программное обеспечение]]
[[Категория:Свободное серверное программное обеспечение]]
[[Категория:Распределённое хранение данных]]
[[Категория:Свободные веб-серверы]]<!-- просто дополнительная функция -->

Текущая версия от 10:27, 23 сентября 2024

YaCy
Логотип программы YaCy
Скриншот программы YaCy
Тип Оверлейная сеть, Поисковая система
Разработчик Сообщество YaCy
Написана на Java[1]
Операционная система Кроссплатформенное ПО
Первый выпуск 2004
Аппаратная платформа Java Virtual Machine
Последняя версия 1.924 (9 февраля 2021)
Репозиторий github.com/yacy/yacy_sea…
Лицензия GNU GPL 2+[вд][2]
Сайт yacy.net (англ.)
Логотип Викисклада Медиафайлы на Викискладе

YaCy (от англ. Yet another Cyberspace, Ещё одно Киберпространство; созвучно с англ. Ya see) — свободно распространяемая децентрализованная поисковая система, построенная по принципу одноранговой сети (P2P). Есть версии для Windows, Linux, MacOSX. Основной программный модуль, написанный на Java, функционирует на нескольких тысячах компьютеров (по состоянию на 2011 год) участников сети YaCy. Каждый участник проекта независимо исследует Интернет, анализируя и индексируя найденные страницы, и складывает результаты индексирования в общую базу данных (так называемый индекс), который совместно используется всеми пользователями YaCy по принципу P2P.

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

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

Программа распространяется под лицензией GPL. Проект поддерживает европейское отделение фонда свободного программного обеспечения (FSFE).[3]

Проект YaCy был основан Михаэлем Кристеном (нем. Michael Christen) в 2003 году.

Преимущества и недостатки

[править | править код]

Преимущества

[править | править код]
  • Совместный поиск может быть осуществлён с YaCy практически всегда: всегда есть часть сети, которая будет доступна.
  • Интернет-пользователи поисковика YaCy независимы от компаний, их рейтинга и их цензуры.
  • Программное обеспечение с открытым исходным кодом, распространяется по лицензии GNU GPL и является бесплатным.
  • При использовании прокси‐сервера клиента он может просканировать страницы из глубокой паутины или неиндексированных сетей общего пользования (таких, как I2P), которые не могут быть проиндексированными обычными поисковыми роботами, такими как в Google, Yahoo или Bing.
  • YaCy не обязательно связан с участием в общественном YaCy-кластере и может, таким образом, быть использованным в качестве поисковой системы в частных сетях (таких, как внутренняя сеть компании) или в частных поисковых сервисах (и индексах) определённой группы страниц.
  • Чем больше узлов находится в сети, тем меньше данных хранится на каждом узле относительно размера индекса, и тем меньше влияние на сеть изменения количества узлов.

Недостатки

[править | править код]
  • Спамеры, теоретически, могут запускать свои узлы, возвращающие спам в качестве результата. Поэтому клиент имеет функцию проверки страниц на наличие искомого текста.[4]
  • Из‐за того, что YaCy необходимо связаться с другими узлами для запроса и из‐за упомянутой выше (необязательной) проверки достоверности результатов поиск занимает больше времени, чем в традиционных поисковых системах.[4]
  • Главный клиент не ищет различные формы слов.
  • Протокол YaCy организован с использованием индивидуальных HTTP-запросов, что влечёт за собой бо́льшие задержки, чем при использовании UDP или TCP с постоянным подключением.
  • Главный клиент написан на Java и, в существующей реализации, работает медленно. С ростом объёма локального индекса значительно растёт потребление памяти и снижается скорость работы. Проверка локальной БД объёмом ~20 Гб может занять несколько секунд, до того, как запрос будет отправлен другим пирам.
  • В общественной сети «freeworld» для поиска по Всемирной паутине в настоящее время представлено относительно мало «активных» «старших» узлов (хранящих накопленный поисковый индекс и отвечающих на поисковые запросы от других узлов), и они могут выдать относительно немного результатов по сравнению с крупными поисковыми машинами. На один узел приходится до нескольких десятков миллионов записей, поэтому их полное перемещение между узлами занимает значительное время, и резкое выключение или добавление значительного количества узлов может временно ухудшить качество сети для некоторых поисковых запросов, как это произошло после выпуска версии 1.0 в ноябре 2011 года, когда количество участников быстро увеличилось примерно до 4000[4] или 1000[5]. В начале марта 2012 года «активными» были около 1/6 одновременно работавших узлов.

Ядро поиска отличается от других поисковых систем — это не центральный сервер, а программа-клиент одноранговой сети, которая работает на множестве компьютеров одновременно. Результаты поиска отображаются в виде web-страницы на локальном web-сайте, который также играет роль web-интерфейса для настройки поисковой системы под нужды пользователя.

В сочетании с дополнительными P2P-системами используется прокси, который автоматически индексирует посещённые страницы. Индексирование не производится в тех случаях, когда данные передаются через GET или POST, или же используются куки (cookies) или HTTP-аутентификации (например, страницы, входящие в определённую запароленную зону).[6] Тем самым гарантируется, что действительно индексируются только доступные для общественности данные.

Другие функции

[править | править код]
  • YaCy обеспечивает всех пользователей прокси-функцией, которая позволяет также подключаться к другим узлам по адресу ИМЯУЗЛА.yacy или ИМЯХЭША.yacyh. www.ИМЯУЗЛА.yacy может быть главной страницей пользователя, под share.ИМЯУЗЛА.yacy находится файлообменник, а ИМЯУЗЛА.yacy это стандартный интерфейс доступа. Другие поддомены могут быть специально созданы путём создания папки с именем поддомена. Динамический DNS не поддерживается.
  • Кроме .yacy-домена, YaCy предоставляет возможность создавать домашнюю страницу и папки, которые могут быть связаны с текущим IP или адресом динамического DNS и доступны для не YaCy пользователей.
  • YaCy имеет встроенную функцию передачи сообщений с помощью которой можно отправлять текстовые сообщения (с форматированием вики), а также передавать файлы.
  • YaCy имеет встроенные вики и блог.
  • Есть управление закладками, которые могут быть общедоступными и личными.
  • Есть возможность внесения отдельных областей в чёрные списки.
  • Есть OpenSearch-интерфейс. Каждый узел обеспечивает доступность его по адресу http://<адрес-узла>:<порт-узла>/opensearchdescription.xml, например https://web.archive.org/web/20120602233757/http://sciencenet.fzk.de:8080/opensearchdescription.xml . Чтобы добавить вашу персональную поисковую систему YaCy в список поисковых систем Firefox-a нужно открыть этот XML файл в браузере и сохранить его в папку «searchplugins», а затем перезапустить Firefox.

Технология

[править | править код]

Программа основана на веб-сервере, который также является кэширующим прокси. Пользователь веб-сервера может получить доступ к оболочке поиска и управления своим собственным узлом. Прокси имеет общий код со сканером, а это значит, что все посещённые через него страницы, которые не являются личными, по умолчанию автоматически записываются в индекс. Кроме того, YaCy предоставляет собственный домен в YaCy-сети, который доступен через прокси-сервер. Для поиска в YaCy интегрированы Solr и Lucene (для версии 1.6 это версии 4.3)

Распределённый индекс

[править | править код]

В отличие от файлообменных сервисов, результаты P2P-поиска должны быть доступны немедленно. Чтобы достигнуть этого, YaCy использует распределённую хеш-таблицу (DHT). Это означает, что все распознанные программой URL-адреса и слова отправляются к узлам, которые подходят для хранения соответствующих контрольных сумм слов, узлов или ссылок. При поиске всё работает наоборот: поиск происходит только по узлам, подходящим для хранения хешей URL-адреса для этого слова.

Таким образом, для получения результатов задействуется только часть узлов.

Типы узлов

[править | править код]

Сеть YaCy состоит из четырёх различных типов узлов:

Новичок
Эти узлы не могут быть найдены, потому что новичок не имеет связи с сетью. Таким образом, вы видите только себя, если узел - новичок.
Младший
Узел находится за файрволом. Другие относят его к младшим или потенциальным узлам,[7] они видят только последний его запрос и у них нет способа определить, находится ли он до сих пор в сети.
Старший(Senior)
На старший можно попасть снаружи и он является полноправным членом сети YaCy. В статистике сети работающие в данный момент старшие узлы называются активными, неработающие — пассивными.[7]
Главный
Старший, который выгружает список сидов, используемый для начального соединения с другими узлами.

Протокол YaCy состоит из текстовых сервлетов, которые обеспечивает встроенный веб-сервер по адресу /yacy/servletname.html. Другие узлы передают данные через GET-параметры и получают ответ в виде простого текста, точный формат отличается для сервлетов.

Начальная загрузка

[править | править код]

При начальной загрузке узел пытается связаться с другими узлами YaCy-сети. Сначала ищутся списки узлов. Первый адрес в superseed.txt служит для загрузки устойчивых YaCy-узлов. seeds.txt является ссылками на другие узлы, таким образом устанавливается контакт с YaCy-сетью. В следующий раз, когда вы запустите YaCy, gebootstrapt создаётся из известных с предыдущего запуска узлов сети. В дальнейшем списки узлов будут необходимы, только когда большинство старых ссылок будет недоступно.

Примечания

[править | править код]
  1. The yacy Open Source Project on Open Hub: Languages Page — 2006.
  2. GitHub (англ.) — 2007.
  3. Web Search By The People, For The People: YaCy 1.0. Дата обращения: 14 декабря 2011. Архивировано 30 ноября 2011 года.
  4. 1 2 3 YaCy Bugfix Release 1.01 With New Community Contributions. Дата обращения: 6 марта 2012. Архивировано 12 февраля 2012 года.
  5. Статистика по количеству: график за 2011 год.
  6. Uk:Privacy — YaCyWiki (недоступная ссылка)
  7. 1 2 /Network.html

Литература

[править | править код]
  • M. Christen: Peer-to-Peer: Eigenes Suchportal mit Yacy einrichten in iX 02/2008, S. 102 ff.
  • M. Schlenker: Gemeinsam gegen Google in OpenSource, 01/2007, November 2006, S. 94-97
  • J. Bager: Europäische Gegenströmung in c’t, 2006/10, 2. Mai 2006, S.172-174 (Onlinetext)
  • R. Sietmann: Wider die Monokultur. P2P-Strategien gegen die Suchmaschinen-Monopolisierung. in c’t, 2005/16, 25. Juli 2005, S.52-53 (Onlinetext)
  • M. Schwarze: Jedermanns Suchmaschine in: HAZ (Artikel als PDF 107 kB)
  • Michael Christen: YaCy — Peer-to-Peer Web-Suchmaschine in Die Datenschleuder, #86, 2005, S.54-57 (gesamtes Heft als PDF 1,7 MB)
  • Веб-сайт YaCy
  • Поисковая система YaCy
  • Английский форум
  • Немецкий форум
  • YaCy-Вики
  • developer page на Berlios
  • Демо-поиск в Интернете, через случайного участника сети YaCy
  • Фонд СПО представил децентрализованную поисковую систему YaCy 1.0
  • "Version 1.0 of YaCy distributed search engine released". The H[англ.]. 2011-11-28. Дата обращения: 15 декабря 2011.
  • "Сторонники свободного ПО строят распределенную поисковую систему". Издательство «Открытые системы». 2011-11-29. Дата обращения: 15 декабря 2011.