2024-02-10 12:53:55 +00:00

179 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Yo! ======
Поисковая площадка для сети Yggdrasil с [[ https://github.com/YGGverse/Yo | открытым исходным кодом]] с минимальным заимствованием наработок архивного [[archive:yggdrasil:sites_and_services:search_services:yggo| YGGo ]]
Целью проекта является переход на более актуальные программные решения, желание сделать проект доступным для быстрой и удобной установки а также сокращение издержек на обслуживающие сервера.
<WRAP center round info 60%>
База данных импортирована с YGGo, но отсутствуют снимки в виду смены их архитектуры (доступен [[ https://github.com/YGGverse/YGGo#database-snaps | архив]] ~14 Гб).
</WRAP>
===== Технические отличия от 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, достаточно изменить правила сбора ссылок, например:
<code>
"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}:/"
},
...
</code>
По аналогии можно добавить поддержку доменов .ygg или сделать поиск только по указанной зоне:
<code>
"regex":"/^http:\\/\\/[A-z0-9\\.-]+\\.ygg/"
</code>
Если не планируется сбор / архивирование медиа контента, можно удалить соответствующие конструкции селекторов.
Не смотря на то, что с помощью регулярных выражений можно сделать то же самое, для удобства добавлены дополнительные фильтры подстроки:
<code>
"skip":
{
"stripos":
{
"url":
[
"#",
"javascript:",
"mailto:",
"magnet:",
"xmpp:"
]
}
}
</code>
==== Внешние ссылки ====
Очень просто можно перевести приложение в режим локального поиска по сайту, указав в настройках
<code>
"external":false
</code>
==== Клиентская индексация ====
Чтобы принимать запросы на индексацию через поисковое поле, нужно включить опцию
<code>
"webui":
{
"search":
{
"index":
{
"request":
{
"url":
{
"enabled":true,
</code>
также можно указать фильтры адресов с помощью регулярного выражения в поле "regex"
===== Резервные копии =====
Сервер Manticore предусматривает несколько базовых сценариев для выполнения бекапов:
==== Логический ====
Данный способ подойдет узлам, предоставляющих **публичный доступ** к собранным данным посредством текстового дампа в формате SQL.
При таком подходе, по расписанию выполняется команда mysqldump:
<code>
@monthly mysqldump -h0 -P9306 manticore > /var/www/html/index.sql 2>&1
</code>
Чтобы не останавливать сканер, можно указать флаг
<code>
--lock-tables=false
</code>
а также исключить дополнительные таблицы, если они не нужны
<code>
--ignore-table=manticore.yo_some_document
</code>
На основном сервере, дамп генерируется раз в месяц, а последняя его версия - всегда доступна по ссылке /index.sql в корне соответствующего сайта: [[ http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yo/index.sql | версия IPv6 ]], [[ http://yo.ygg/index.sql | yo.ygg ]] и т.д.
Владельцы могут ограничить канал для загрузки дампов посредством http:\\
<code>
location = /index.sql {
limit_rate 50k;
# ограничение будет срабатывать после 100 Мб
# limit_rate_after 100m;
}
</code>
История снимков на данный момент не опубликована в виду дисковых ограничений и вероятно, этот процесс будет автоматизирован последством создания периодических [[ 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 | индекс ]])
==== Alfis ====
* [[ http://yo.ygg ]] - поиск по доменной зоне .ygg ([[ http://yo.ygg/index.sql | индекс ]])
* [[ http://ygg.yo.index ]] - алиас yo.ygg ([[ http://ygg.yo.index/index.sql | индекс ]])
//* зона *.yo.index зарезервирована для домен-ориентированных узлов Yo! например, `.btn`, `.conf`, `.mirror` - операторы независимых узлов могут отправить запрос на присвоение адреса бесплатно.//
===== Ссылки =====
Проект на GitHub: https://github.com/YGGverse/Yo ([[ http://[316:c51a:62a3:8b9::4]/YGGverse/Yo | зеркало ]])\\
Официальный сайт 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~~