Задачка в портфолио Backend

Если вы Backend разработчик, то скорее всего, для портфолио вам все советуют реализовать CRUD приложение для работы с базой. Возможно вы уже написали "Ветеринарную клинику", "Веб калькулятор", "Прогноз погоды".

Предлагаю решить задачку поинтереснее: Реализовать веб-сервер для индексации текстовых документов. Класс хранилища (БД) должен быть реализован вами, в выбранной вами структуре данных. Напишите свой класс, который предоставляет возможность поиска и сортировки по тексту. Желательно не прибегать к стандартным методам sort, а реализовывать свои.

Сервер должен иметь 3 Endpoints:

POST /api/v1/document - сохранение документа в базе. На вход принимается текст документа в RequestBody.

Пример запроса:

POST /api/v1/document

RequestBody: {"text":"Very Very Happy Day"}

GET /api/v1/document/search/{phrase} - поиск всех документов в которых содержится запрашиваемая поисковая строка {phrase}. Ответ должен содержать массив объектов, где будут указаны текст и количество вхождений данной поисковой фразы.

Пример запроса:

GET /api/v1/document/search/Very

Response: [{"text":"Very Very Happy Day", "count": 2}]

POST /api/v1/document/process - На вход принимается массив строк в RequestBody. Каждая строка содержит поисковую фразу. Обработка заключается в следующем: Из базы выгружаются все сохранённые документы, которые содержат данную поисковую строку. Затем тексты сортируются по количеству найденных поисковых фраз. После сортировки, все поисковые фразы в текстах заменяются на хеш.

Пример запроса:

POST /api/v1/document/process

Response: [{"text":"151 151 Happy Day", "count": 2}]

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