/txt_searcher

Test job for juinor python backend developer. ElasticSearch + sqlalchemy + Fastapi

Primary LanguageJupyter Notebook

Для выполнения выбрал следующий стек технологий:

  • PostgreSQL
  • Python 3.11.0
    • FastApi
    • sqlalchemy + psycopg2
    • pytest
    • poetry - для менеджмента зависимостей, в Dockerfile использую pip
  • ElasticSearch 7.17.9

Сборка и запуск:

docker compose up

При запуске, python приложение выгружает из posts.csv все данные в postgresql и elasticsearh - это занимает какое то время, прогресс можно увидеть в логах контейнера

Тестовое задание для стажера Python

Необходимо написать очень простой поисковик по текстам документов. Данные хранятся в БД по желанию, поисковый индекс в эластике.

Ссылка на тестовый массив данных: [csv]

Структура БД:

  • id - уникальный для каждого документа;
  • rubrics - массив рубрик;
  • text - текст документа;
  • created_date - дата создания документа.

Структура Индекса:

  • iD - id из базы;
  • text - текст из структуры БД.

Необходимые методы

  • сервис должен принимать на вход произвольный текстовый запрос, искать по тексту документа в индексе и возвращать первые 20 документов со всем полями БД, упорядоченные по дате создания;
  • удалять документ из БД и индекса по полю id.

Технические требования:

  • любой python фреймворк кроме Django и DRF;
  • README с гайдом по поднятию;
  • docs.json - документация к сервису в формате openapi.

Программа максимум:

  • функциональные тесты;
  • сервис работает в Docker;
  • асинхронные вызовы.