Fess: поисковый сервер для организаций на основе OpenSearch
Fess — это открытый, самостийный поисковый сервер для предприятий, основанный на OpenSearch. Он умеет индексировать контент с веб-сайтов, файловых систем, баз данных и облачных источников, поддерживает более 20 языков и предоставляет REST API для интеграции.
Fess выгодно отличается от других решений простотой настройки через браузер и встроенным краулером, который автоматически собирает документы в популярных форматах (PDF, DOCX и т.д.). Проект может быть полезен как для крупных организаций, так и для малых бизнесов, которым требуется собственный поисковый движок, например, для сайта или документации.
Для работы Fess нужен Java 21 или новее. Учти, что это решение требует дополнительных настроек для разных источников данных и может не поддерживать функции, привычные для более популярных коммерческих поисковых систем. Следует обратить внимание на лицензию Apache 2.0, позволяющую свободное использование, но уточни детали, если планируешь коммерческое применение.
Описание проекта
Fess — это сервер корпоративного поиска, который можно установить и запустить на любой платформе с Java. Он построен на базе OpenSearch, но для его настройки не требуется предварительных знаний об OpenSearch. Все настройки производятся через веб-интерфейс администрирования.
Встроенный краулер собирает документы из различных источников, таких как веб-сайты, файловые системы и хранилища данных (например, базы данных и CSV-файлы). Fess поддерживает множество форматов документов, включая Microsoft Office, PDF и ZIP-архивы.
Существует бесплатная альтернатива Google Site Search под названием Fess Site Search, которую можно интегрировать на своем сайте.
Возможности
- Полнотекстовый поиск с фасетами, сортировкой и предложениями по запросам.
- Краулеры для веб-сайтов, файловых систем и хранилищ данных (базы данных, облачное хранилище и SaaS).
- Поддержка множества форматов документов, включая Microsoft Office, PDF и архивы.
- Веб-интерфейс администрирования и REST API.
- Фильтрация результатов поиска на основе ролей и прав доступа.
- Единый вход через LDAP, OpenID Connect, SAML, SPNEGO и Microsoft Entra ID.
- Многоязычный интерфейс и текстовый анализ (более 20 языков).
- Возможность расширения через плагины для хранилищ данных,конвейеров загрузки, скриптов и тем.
Требования
- Java 21 или выше для пакетов ZIP, RPM и DEB.
- OpenSearch как бэкенд для поискового движка. Для образов Docker он предустановлен; в других случаях его нужно настроить отдельно.
Более подробные сведения можно найти в руководстве по установке.
Как начать
Существует два способа попробовать Fess: скачать и установить его самостоятельно или запустить с помощью Docker.
Скачать и установить/запустить
Fess можно скачать с страницы релизов. Доступны три формата: DEB, RPM и ZIP.
Вот команды для использования ZIP-версии:
$ unzip fess-.zip
$ cd fess-
$ ./bin/fess
Для более подробных сведений смотри руководство по установке.
Docker
Образы Docker опубликованы на ghcr.io. Файл Docker Compose доступен в репозитории docker-fess.
Веб-интерфейс
- Интерфейс поиска: http://localhost:8080/
- Административный интерфейс: http://localhost:8080/admin/ (логин/пароль по умолчанию: admin/admin)
Зарегистрируй целевые сайты для краулинга на страницах конфигурации Web, File или Data Store в административном интерфейсе, а затем запусти краулер на странице планировщика.
Миграция с другого поставщика поиска
Подробности смотри в документе MIGRATION.md.
Хранилище данных
Fess может сканировать следующие хранилища и API:
- Confluence/Jira
- Box
- CSV
- База данных
- Dropbox
- Elasticsearch
- Git
- Gitbucket
- G Suite
- JSON
- Office 365
- S3
- Salesforce
- SharePoint
- Slack
Плагины
Fess можно расширять с помощью плагинов. В дополнение к коннекторам для хранилищ данных, доступны следующие плагины:
Темы
- fess-themes: коллекция статических тем, каждая из которых является самодостаточным одностраничным приложением, устанавливаемым путем загрузки ZIP в административном интерфейсе.
Конвейеры загрузки
Скрипты
Разработка
Получение исходного кода
- Клонируйте репозиторий:
$ git clone https://github.com/codelibs/fess.git - Импортируйте его как проект Maven в вашем IDE.
Для сборки Fess требуется Java 21 или выше и Maven.
Настройка плагинов OpenSearch
Запустите команду antrun:run, чтобы загрузить плагины в директорию плагинов:
$ mvn antrun:run
Запуск Fess
Запустите или отладьте org.codelibs.fess.FessBoot в вашем IDE, затем откройте http://localhost:8080/.
Сборка пакета
Запустите цель package, чтобы создать файл релиза в target/releases:
$ mvn package
$ mvn rpm:rpm # пакет .rpm
$ mvn jdeb:jdeb # пакет .deb
Генерация исходного кода
$ mvn dbflute:download # первичная настройка
$ mvn dbflute:freegen
$ mvn license:format
Интеграционные тесты
Интеграционные тесты требуют работающего сервера Fess с OpenSearch.
- Соберите Fess:
$ mvn antrun:run # загрузка плагинов OpenSearch, если это ещё не сделано $ mvn package - Запустите сервер Fess:
$ unzip target/releases/fess-*.zip $ ./fess-*/bin/fess &Подождите, пока Fess будет готов (это может занять до 60 секунд). Он возвращает JSON-ответ, когда готов:
$ curl -s "http://localhost:8080/api/v1/health" - Клонируйте тестовые данные (необходимы для
SearchApiTests):$ git clone https://github.com/codelibs/fess-testdata.git /tmp/fess-testdata - Запустите тесты:
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"Для запуска одного теста:
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
Содействие
Ваши вкладки приветствуются. Если ты обнаружил ошибку или у тебя есть предложение по добавлению функциональности, открой issue. Для вопросов и обсуждений используй форум. Pull requests на исправления и улучшения также приветствуются; для крупных изменений рекомендуется сначала обсудить подход.
Перед коммитом отформатируй код и лицензии:
$ mvn formatter:format
$ mvn license:format
Добавление языка
Fess интернационализирован. Чтобы добавить метки и сообщения на новый язык, переведи файлы свойств и переименуй их с использованием кода языка (fess_*_[lang].properties):
Для поиска и анализа индекса, если doc.json содержит lang_[lang] для твоего языка, соответствующим образом настрой анализатор. Смотри документацию OpenSearch по анализаторам для получения подробной информации. Pull requests с новыми языками приветствуются.
Сообщество и поддержка
- Сайт и документация: fess.codelibs.org
- Вопросы и обсуждения: discuss.codelibs.org
- Сообщения об ошибках и запросы на функциональность:
Радар проекта: 73 из 100 — крепкий проект
- Импульс 4 ≈ 8 звёзд в месяц
- Темп разработки 100 479 коммитов за 12 недель
- Зрелость 100 проекту 13 лет, больше 100 релизов
- Сообщество 67 46 участников, 177 форков
- Свежесть 98 последний коммит — 4 дня назад
- Быстрый старт 65 есть: команда установки, сайт/демо
- Готовность к продакшену 70 релиз fess-15.9.0, автосборка
- Безопасность и доверие 60 лицензия Apache-2.0, организация
- Документация 94 README 9.3 тыс. знаков, 27 разделов, папка docs
- Экосистема 70 58 подписчиков на обновления, 19 тем
Как считаем
Только открытые данные GitHub на 31.10.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: codelibs/fess →
Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.ПодписатьсяПохожие статьи
RepoRadar