====== Yo! ====== Поисковая площадка для сети Yggdrasil с [[ https://github.com/YGGverse/Yo | открытым исходным кодом]] с минимальным заимствованием наработок архивного [[archive:yggdrasil:sites_and_services:search_services:yggo| YGGo ]] Целью проекта является переход на более актуальные программные решения, желание сделать проект доступным для быстрой и удобной установки а также сокращение издержек на обслуживающие сервера. База данных импортирована с YGGo, но отсутствуют снимки в виду смены их архитектуры (доступен [[ https://github.com/YGGverse/YGGo#database-snaps | архив]] ~14 Гб). ===== Технические отличия от YGGo ===== * в основе используется поисковый сервер [[ https://github.com/manticoresoftware | Manticore ]], которому делегированы все задачи хранения данных и операции с индексами * отказ от перманентных хранилищ вроде MySQL, что упрощает установку и значительно снижает требования к серверу (удалось освободить порядка 1Гб ОЗУ и 4Гб дискового пространства при ~1М документов) * индексы обновляются в режиме Real Time * непосредственно кодовая база проекта реализована в нескольких файлах - для CLI и WebUI, остальные задачи делегированы [[ https://github.com/YGGverse/Yo/blob/main/composer.json | Composer ]], в частности - официальной библиотеке [[ https://github.com/manticoresoftware/manticoresearch-php | manticoresearch-php ]] * в проекте сохранены все ключевые функции, в том числе снимки истории страниц (snap) которые в свою очередь оптимизированы для децентрализованного формата хранения данных вида /md5url/timestamp а также сжатием с помощью tar.gz * основной из задач проекта является доработка поисковой выборки, так как в предыдущей реализации было трудно что либо найти и сейчас над этим ведется работа (просьба оставлять отзывы о результатах запросов) ===== Установка ===== Для установки достаточно выполнить несколько команд, описанных в разделе [[ https://github.com/YGGverse/Yo#install | README ]] Приложение самостоятельно создаст индексы на основании единственного файла настроек. ===== Настройки ===== Все необходимые для работы настройки собраны в файл json ([[ https://github.com/YGGverse/Yo/blob/main/example/config.json | пример ]]) ==== Yggdrasil ==== Платформа изначально создана для поиска контента в сети Yggdrasil но также может быть использована для организации локального или публичного поискового сервера для сети Интернет. Чтобы осуществлять поиск в сети Yggdrasil, достаточно изменить правила сбора ссылок, например: "a:not([rel=nofollow])": { "attribute":"href", "external":true, "regex":"/^http:\\/\\/\\[0{0,1}[2-3][a-f0-9]{0,2}:/" }, "image": { "attribute":"src", "external":true, "regex":"/^http:\\/\\/\\[0{0,1}[2-3][a-f0-9]{0,2}:/" }, ... По аналогии можно добавить поддержку доменов .ygg или сделать поиск только по указанной зоне: "regex":"/^http:\\/\\/[A-z0-9\\.-]+\\.ygg/" Если не планируется сбор / архивирование медиа контента, можно удалить соответствующие конструкции селекторов. Не смотря на то, что с помощью регулярных выражений можно сделать то же самое, для удобства добавлены дополнительные фильтры подстроки: "skip": { "stripos": { "url": [ "#", "javascript:", "mailto:", "magnet:", "xmpp:" ] } } ==== Внешние ссылки ==== Очень просто можно перевести приложение в режим локального поиска по сайту, указав в настройках "external":false ==== Клиентская индексация ==== Чтобы принимать запросы на индексацию через поисковое поле, нужно включить опцию "webui": { "search": { "index": { "request": { "url": { "enabled":true, также можно указать фильтры адресов с помощью регулярного выражения в поле "regex" ===== Резервные копии ===== Сервер Manticore предусматривает несколько базовых сценариев для выполнения бекапов: ==== Логический ==== Данный способ подойдет узлам, предоставляющих **публичный доступ** к собранным данным посредством текстового дампа в формате SQL. При таком подходе, по расписанию выполняется команда mysqldump: @monthly mysqldump -h0 -P9306 manticore > /var/www/html/index.sql 2>&1 Чтобы не останавливать сканер, можно указать флаг --lock-tables=false а также исключить дополнительные таблицы, если они не нужны --ignore-table=manticore.yo_some_document На основном сервере, дамп генерируется раз в месяц, а последняя его версия - всегда доступна по ссылке /index.sql в корне соответствующего сайта: [[ http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yo/index.sql | версия IPv6 ]], [[ http://yo.ygg/index.sql | yo.ygg ]] и т.д. Владельцы могут ограничить канал для загрузки дампов посредством http:\\ location = /index.sql { limit_rate 50k; # ограничение будет срабатывать после 100 Мб # limit_rate_after 100m; } История снимков на данный момент не опубликована в виду дисковых ограничений и вероятно, этот процесс будет автоматизирован последством создания периодических [[ yggdrasil:bittorrent:bittorrent | торрент ]] раздач. Таким образом, можно выполнить слияние / быстро развернуть приватный или общий поисковый сервер с нуля, без лишнего обращения к сайтам и затрат времени на сканирование. [[ https://manual.manticoresearch.com/Securing_and_compacting_a_table/Backup_and_restore#Backup-and-restore-with-mysqldump | Подробнее о логических бекапах ]] ==== Физический ==== Данный способ подразумевает резервное копирование мета информации сервера, включая бинарные данные. Подход менее требовательный к ресурсам сервера, может выполнятся чаще для административных нужд. [[ https://manual.manticoresearch.com/Securing_and_compacting_a_table/Backup_and_restore#Using-manticore-backup-command-line-tool | Подробнее о физических бекапах ]] ===== Инстанции ===== ==== Yggdrasil ==== * [[ http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yo/ ]] - только адреса IPv6 0200::/7 ([[ http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yo/index.sql | индекс ]]) * [[ http://yo.ygg ]] * [[ http://ygg.yo.index ]] ===== Ссылки ===== Проект на GitHub: https://github.com/YGGverse/Yo ([[ http://[316:c51a:62a3:8b9::4]/YGGverse/Yo | зеркало ]])\\ Ветка для протокола [[:gemini_protocol|Gemini]] [[https://github.com/YGGverse/Yo/tree/gemini]]\\ Официальный сайт Manticore: https://manticoresearch.com\\ Новости: https://mastodon.social/@YGGverse\\ Канал KevaChat: [[ http://[201:23b4:991a:634d:8359:4521:5576:15b7]/kevachat/room/NRzhB7LF4Fv5RQUtfhRtnUpTWzArSQ55R2#latest | 0200::/7 ]], [[ http://kevachat.ygg/room/NRzhB7LF4Fv5RQUtfhRtnUpTWzArSQ55R2#latest | алиас ]] ~~DISCUSSION~~