Fess: поисковый сервер для организаций на основе OpenSearch

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.

Веб-интерфейс

Зарегистрируй целевые сайты для краулинга на страницах конфигурации Web, File или Data Store в административном интерфейсе, а затем запусти краулер на странице планировщика.

Миграция с другого поставщика поиска

Подробности смотри в документе MIGRATION.md.

Хранилище данных

Fess может сканировать следующие хранилища и API:

Плагины

Fess можно расширять с помощью плагинов. В дополнение к коннекторам для хранилищ данных, доступны следующие плагины:

Темы

  • fess-themes: коллекция статических тем, каждая из которых является самодостаточным одностраничным приложением, устанавливаемым путем загрузки ZIP в административном интерфейсе.

Конвейеры загрузки

Скрипты

Разработка

Получение исходного кода

  1. Клонируйте репозиторий:
    $ git clone https://github.com/codelibs/fess.git
  2. Импортируйте его как проект 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.

  1. Соберите Fess:
    $ mvn antrun:run  # загрузка плагинов OpenSearch, если это ещё не сделано
    $ mvn package
  2. Запустите сервер Fess:
    $ unzip target/releases/fess-*.zip
    $ ./fess-*/bin/fess &

    Подождите, пока Fess будет готов (это может занять до 60 секунд). Он возвращает JSON-ответ, когда готов:

    $ curl -s "http://localhost:8080/api/v1/health"
  3. Клонируйте тестовые данные (необходимы для SearchApiTests):
    $ git clone https://github.com/codelibs/fess-testdata.git /tmp/fess-testdata
  4. Запустите тесты:
    $ 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 с новыми языками приветствуются.

Сообщество и поддержка

Похожие статьи

Популярные темы на сайте