Собственный поисковый движок без использования Java для моих статических сайтов

Вопрос или проблема

Я хочу самостоятельно разместить поисковую систему, которая индексирует мой статический вебсайт(ы).

Я не хочу использовать CMS (в которых обычно встроена поисковая система) для этих сайтов и не хочу направлять своих посетителей к стороннему сервису поисковых систем.

Это не обязательно должна быть удобная для пользователя поисковая система (такая как Google, Bing и т.д.), она в основном предназначена для опытных пользователей, поэтому может потребоваться сложный синтаксис поиска.

Требования

Официальные требования:

  • Поисковая система должна быть FLOSS.

  • Она должна работать на сервере GNU/Linux.

  • Она не должна использовать Java (я знаю, что есть несколько хороших проектов поисковых систем на Java, но, к сожалению, мой хост не поддерживает это).

Бэкэнд:

  • Поисковая система должна индексировать (X)HTML5. Поддержка других форматов не требуется.

  • Я не хочу, чтобы паук сам находил мои страницы. Вместо этого я хочу предоставить список URL-адресов, которые должны быть проиндексированы (в идеале поддерживая один из форматов sitemaps.org).

  • Я не хочу добавлять метаданные о документах где-либо, кроме самих документов.

Фронтэнд:

  • Поисковая система не должна требовать JavaScript (за исключением необязательных функций).
  • Она не должна устанавливать cookies (если пользователь явно не отправит форму настройки или подобное).

Мой список желаний

  • Индексация: В дополнение к полному тексту, она должна индексировать как можно больше сигналов (например, в виде пар “имя-значение”), таких как метатеги, RDFa/JSON-LD, семантические элементы и т.д.

  • SERP: Я хочу иметь возможность определять, как должны выглядеть результаты, в зависимости от индексированных данных. Похоже на расширенные сниппеты Google. Например: показать изображение, список, короткую таблицу и т.д.

  • Рейтинг: Я хотел бы иметь возможность настраивать алгоритм ранжирования, т.е. присваивать каждому полю определенный балл/приоритет.

  • Операторы поиска: Она должна по крайней мере поддерживать логические AND/OR/NOT и скобки (например, (laptop OR notebook) (review OR reviews) -netbook). Чем больше операторов, тем лучше (поиск по фразам/диапазонам/близости; поиск по полям; специальные символы, чувствительность к регистру и т.д.).

Что насчет доброй старой ht:dig?

Последний релиз датирован 2004 годом, поэтому я не уверен, как он индексирует новые элементы, введенные HTML5.

Поддержка текстовых форматов, отличных от HTML (PDF, DOCX…) также не оптимальна, но это не входит в ваш список требований.

Я также рекомендую Sphinx – смотрите sphinxsearch.com

Sphinx – это сервер полнотекстового поиска с открытым исходным кодом, разработанный с нуля с учетом производительности, релевантности (т.е. качества поиска) и простоты интеграции. Он написан на C++ и работает на Linux (RedHat, Ubuntu и т.д.), Windows, MacOS, Solaris, FreeBSD и ряде других систем.

Sphinx позволяет либо быстро и легко индексировать и искать данные, хранящиеся в базе данных SQL, NoSQL или просто в файлах, либо индексировать и искать данные на лету, работая с Sphinx практически так же, как с сервером базы данных.

У меня только положительный опыт использования его на Linux и Windows.

Ответ или решение

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

Обзор требований

Формальные требования:

  • Проект должен быть свободным программным обеспечением (FLOSS).
  • Запуск на сервере GNU/Linux.
  • Отсутствие использования Java.

Требования к бэкенду:

  • Индексация (X)HTML5.
  • Возможность предоставления списка URL для обхода, предпочтительно в формате sitemaps.org.
  • Поддержка метаданных исключительно в самом документе.

Требования к фронтенду:

  • Отказ от JavaScript, за исключением опциональных функций.
  • Отсутствие установки cookies, если пользователь не подаст настройки.

Рекомендации по выбору программного обеспечения

  1. Sphinx

    • Sphinx — это мощный сервер полнотекстового поиска, разработанный на C++. Он поддерживает индексацию данных, хранящихся в SQL или NoSQL базах данных, а также предоставляет возможность индексирования файлов. Sphinx позволяет настраивать алгоритм ранжирования и поддерживает расширенные операторы поиска, такие как AND, OR, NOT, а также фильтрацию по полям. Он подходит для вашего сценария, так как позволяет гибко настраивать внешние интерфейсы и форматы выдачи.
    • Преимущества:
      • Высокая производительность и качество поиска.
      • Легкость интеграции с существующими системами.
      • Возможность кастомизации отображения результатов поиска, что соответствует вашим желаниям о SERP.
  2. Xapian

    • Xapian — это еще одно FLOSS решение, предоставляющее API для полнотекстового поиска. Он не использует Java и поддерживает индексацию HTML5, позволяя организовать гибкую систему поиска. Xapian предлагает специальные операторы и возможности ручной настройки весов полей.
    • Преимущества:
      • Можно интегрировать с различными приложениями и языками программирования (особенно удобно с Python и PHP).
      • Поддержка множества функций, расширяющих стандартный поиск.
  3. Whoosh

    • Whoosh — это библиотека поиска на Python, которая не требует сторонних серверов и может работать в том же приложении, что и ваш сайт. Она идеально подходит для небольших проектов и статических сайтов.
    • Преимущества:
      • Легкость в использовании и настройке.
      • Полная свобода в определении структуры индексации и поисковых запросов.

Заключение

Из вышеперечисленных решений, Sphinx будет наиболее подходящим выбором с учетом требований к стабильности, гибкости, возможностям кастомизации и функциональности. Важно учитывать, что настройка и поддержка такой системы потребуют определенных технических навыков. Сочетание различных решений — например, использование Sphinx для индексации и Whoosh для конкретных нужд — также может быть целесообразным.

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

Оцените материал
Добавить комментарий

Капча загружается...