Skip to content

Cuga77/CIS-engine

Repository files navigation

CIS-engine

Статус CI Статус Релиза Go Version License

О проекте

CIS-engine (Crawler-Indexer-Searcher) — это полноценный поисковый движок, реализованный на Go. Проект представляет собой полный конвейер данных: от сбора информации в вебе до предоставления удобного API для ее поиска.

Архитектура

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

graph LR
    subgraph CIS-engine
        A[Интернет] --> B(Crawler);
        B --> C{PostgreSQL};
        D(Indexer) --> C;
        C --> E(Searcher / API);
        F(Пользователь) --> E;
        G(Веб-интерфейс) --> E;
    end
Loading

Ключевые возможности

  • Веб-интерфейс: Простой и удобный интерфейс для поиска, доступный из браузера.
  • Высокопроизводительный краулер: Использует пул воркеров для эффективного конкурентного обхода сайтов.
  • Полнотекстовый поиск: Применяет встроенные возможности PostgreSQL (tsvector, tsquery) для быстрого и релевантного поиска с поддержкой русского языка.
  • REST API: Простой и понятный API на базе Gin для поиска и управления системой.
  • CLI: Удобный клиент командной строки (cis-cli) на базе Cobra для взаимодействия с API.
  • Контейнеризация: Готовые конфигурации Docker и Docker Compose для быстрого запуска всего стека одной командой.
  • CI/CD: Автоматизированные сборка, тестирование и публикация релизов под Windows, macOS и Linux с помощью GitHub Actions и GoReleaser.

Технологический стек

  • Язык: Go
  • Веб-фреймворк: Gin Gonic
  • База данных: PostgreSQL
  • CLI: Cobra
  • Контейнеризация: Docker, Docker Compose
  • CI/CD: GitHub Actions, GoReleaser

Начало работы

Для запуска проекта локально вам понадобится установленный Docker и Docker Compose.

  1. Клонируйте репозиторий:

    git clone https://github.com/Cuga77/CIS-engine.git
    cd CIS-engine
  2. Запустите сервисы: Эта команда соберет образы и запустит API, краулер, индексатор и базу данных.

    docker-compose up --build

    После запуска в консоли появится сообщение о том, что сервер запущен.

Использование

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

После запуска сервисов, откройте в браузере следующий адрес: http://localhost:8081/search

Вы увидите страницу с поисковой строкой, где сможете вводить запросы и получать результаты.

CLI

Вы можете скачать готовый бинарный файл для вашей ОС со страницы Releases или собрать его из исходного кода:

go build -o cis-cli ./cmd/cli/

Примеры команд:

# Добавить URL для сканирования
./cis-cli crawl "https://go.dev/"

# Выполнить поиск по проиндексированным страницам
./cis-cli search "concurrency patterns"

# Проверить статус системы (количество страниц в индексе)
./cis-cli status

# Показать версию CLI
./cis-cli version

По умолчанию, CLI обращается к API по адресу http://localhost:8081. Вы можете переопределить это с помощью флага --api-url или переменной окружения CIS_API_URL.

About

Поисковой движок на Go

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors