[[Yo!]]
 

Yo!

Поисковая площадка для сети Yggdrasil с открытым исходным кодом с минимальным заимствованием наработок архивного YGGo

Целью проекта является переход на более актуальные программные решения, желание сделать проект доступным для быстрой и удобной установки а также сокращение издержек на обслуживающие сервера.

База данных импортирована с YGGo, но отсутствуют снимки в виду смены их архитектуры (доступен архив ~14 Гб).

Технические отличия от YGGo

  • в основе используется поисковый сервер Manticore , которому делегированы все задачи хранения данных и операции с индексами
  • отказ от перманентных хранилищ вроде MySQL, что упрощает установку и значительно снижает требования к серверу (удалось освободить порядка 1Гб ОЗУ и 4Гб дискового пространства при ~1М документов)
  • индексы обновляются в режиме Real Time
  • непосредственно кодовая база проекта реализована в нескольких файлах - для CLI и WebUI, остальные задачи делегированы Composer , в частности - официальной библиотеке manticoresearch-php
  • в проекте сохранены все ключевые функции, в том числе снимки истории страниц (snap) которые в свою очередь оптимизированы для децентрализованного формата хранения данных вида /md5url/timestamp а также сжатием с помощью tar.gz
  • основной из задач проекта является доработка поисковой выборки, так как в предыдущей реализации было трудно что либо найти и сейчас над этим ведется работа (просьба оставлять отзывы о результатах запросов)

Установка

Для установки достаточно выполнить несколько команд, описанных в разделе README

Приложение самостоятельно создаст индексы на основании единственного файла настроек.

Настройки

Все необходимые для работы настройки собраны в файл 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 в корне соответствующего сайта: версия IPv6 , yo.ygg и т.д.

Владельцы могут ограничить канал для загрузки дампов посредством http:

location = /index.sql {
	limit_rate 50k;
	# ограничение будет срабатывать после 100 Мб
	# limit_rate_after 100m;  
}

История снимков на данный момент не опубликована в виду дисковых ограничений и вероятно, этот процесс будет автоматизирован последством создания периодических торрент раздач.

Таким образом, можно выполнить слияние / быстро развернуть приватный или общий поисковый сервер с нуля, без лишнего обращения к сайтам и затрат времени на сканирование.

Подробнее о логических бекапах

Физический

Данный способ подразумевает резервное копирование мета информации сервера, включая бинарные данные.

Подход менее требовательный к ресурсам сервера, может выполнятся чаще для административных нужд.

Подробнее о физических бекапах

Инстанции

Yggdrasil

Ссылки

Проект на 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 , алиас

Обсуждение

d4708, 2023/12/13 03:04, 2023/12/13 03:05
В виду наличия в сети зеркал, чтобы ускорить индексацию, на основном сервере снимки истории работают по whitelist. В него добавлен этот сайт и еще несколько.

Если есть ресурс, страницы которого считаете нужным сохранять - пишите в комментарии, на гитхаб или чат проекта.

Fyodor Ustinov, 2023/12/13 07:53
А зачем разделены "адреса" и "домены"? Искать в двух местах - совершенно неудобно.

d4708, 2023/12/13 18:16, 2023/12/13 18:36
Мне показалось удобным искать по доменам или адресам отдельно. Иначе придется добавлять фильтр если я не юзаю Alfis - будет неудобно пересматривать ygg в выдаче. Также актуален вопрос дублей контента.. в общем пока разделено на всякий случай, смержить всегда можно.

Планируется создать "локальный" и "сетевой" поиск, где адреса и домены и все остальные узлы будут объедены в один массив и добавлена фильтрация, просто не дошли руки.
Также в виду такого подхода, планировалось разделить оба сервера физически для снижения нагрузки с ростом индексов.

Только авторизованные участники могут оставлять комментарии.
yggdrasil/sites_and_services/search_services/yo.txt · Последнее изменение: 2024/04/14 07:29 — d4708
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki