Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

skillbox-cpp-starter/SearchEngine

Repository files navigation

SearchEngine

Описание итогового проекта курса "Разработчик C++ с нуля" . Название проекта - "SearchServer"

Что было сделано: Реализованы классы SearchServer, AsioServer, session, Settings, ThreadPool, InvertedIndex, DocPath, RelativIndex, Word, Logger выполняющие следующих функционал:

SearchServer:

  • проверяет корректоность настроек сервера, выбрасывает соответствующие исключения в случае их неправильности;
  • отображает текущие настройки сервера;
  • запускает в отдельном потоке переодическое обновление словаря (переиндексацию файлов);
  • передает в InvertedIndex вектор путей файлов подлежащих индексации, получаемых из настроек (перечислены явно или просто все из папки).
  • запускает в отдельном потоке асио-сервер;
  • выполняет поисковые запросы, формирует ответы;
  • имеет возможность работать в режимах точного и не точного поиска(см. подробнее в SerchServer.cpp);
  • записывает информацию о своей работе в лог-файл.

InvertedIndex:

  • в многопоточном режиме производит индексацию файлов с составлением словаря;
  • записывает информацию о своей работе в лог-файл;
  • корректирует словарь при изменении, удалении, добавлении новых файлов.

DocPath:

  • предоставляет классу InvertedIndex сведения о новых (и/или измененных) файлах подлжещих индексации и добавлению в словарь;
  • предоставляет классу InvertedIndex сведения о файлах подлежащих удалению из словаря.

RelativIndex:

  • участвует в подсчете релевантности файлов соответствующих поисковому запросу.

Word:

  • участвует в получении выборки файлов содержащих все слова из поискового запроса (если сервер работает в режиме точного поиска).

Settings:

  • хранит и отображает настройки сервера.

AsioServer:

  • устанавливает и разрывает соединения с клиентами сервера;
  • запускает соответствующие кадому клиенту сессии в асинхронном режиме.

session:

  • получает от клиента команду (хедер) и информацию запроса, читая из сокета;
  • отправляет ответ клиенту, записывая команду (хедер) и информацию содержащую ответ в сокет;
  • проверяет корректность хедера запроса поступающего от клиента, разрывает соединение в случае некорректности, c отправлением клиенту уведомления об ошибке.
  • передает SearchServer поисковые запросы поступившие от клиентов, получает от SearchServer ответы;
  • передает клиенту текст запрашиваемого файла.

ThreadPool:

  • предстваляет InverrtedIndex пул потоков для произведения индексации файлов.

ConvertJSON:

  • получает/записывает настройки из/в класс(а) Settings;
  • получает запросы из json файла;
  • записывает ответы в json файл;
  • выбрасывает исключения в случае некорректности обрабатываемых json файлов.

Logger:

  • для логирования работы сервера.

Создано клиентское приложение в середе разработки RAD studio, позволяющее отправлять запросы серверу по сети.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /