Поисковая площадка для сети Yggdrasil с открытым исходным кодом с минимальным заимствованием наработок архивного YGGo
Целью проекта является переход на более актуальные программные решения, желание сделать проект доступным для быстрой и удобной установки а также сокращение издержек на обслуживающие сервера.
База данных импортирована с YGGo, но отсутствуют снимки в виду смены их архитектуры (доступен архив ~14 Гб).
Для установки достаточно выполнить несколько команд, описанных в разделе README
Приложение самостоятельно создаст индексы на основании единственного файла настроек.
Все необходимые для работы настройки собраны в файл json ( пример )
Платформа изначально создана для поиска контента в сети 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 в корне соответствующего сайта: версия IPv6 , yo.ygg и т.д.
Владельцы могут ограничить канал для загрузки дампов посредством http:
location = /index.sql { limit_rate 50k; # ограничение будет срабатывать после 100 Мб # limit_rate_after 100m; }
История снимков на данный момент не опубликована в виду дисковых ограничений и вероятно, этот процесс будет автоматизирован последством создания периодических торрент раздач.
Таким образом, можно выполнить слияние / быстро развернуть приватный или общий поисковый сервер с нуля, без лишнего обращения к сайтам и затрат времени на сканирование.
Данный способ подразумевает резервное копирование мета информации сервера, включая бинарные данные.
Подход менее требовательный к ресурсам сервера, может выполнятся чаще для административных нужд.
Проект на GitHub: https://github.com/YGGverse/Yo ( зеркало )
Ветка для протокола Gemini https://github.com/YGGverse/Yo/tree/gemini
Официальный сайт Manticore: https://manticoresearch.com
Новости: https://mastodon.social/@YGGverse
Канал KevaChat: 0200::/7 , алиас
Обсуждение
Если есть ресурс, страницы которого считаете нужным сохранять - пишите в комментарии, на гитхаб или чат проекта.
Планируется создать "локальный" и "сетевой" поиск, где адреса и домены и все остальные узлы будут объедены в один массив и добавлена фильтрация, просто не дошли руки.
Также в виду такого подхода, планировалось разделить оба сервера физически для снижения нагрузки с ростом индексов.