Skip to content

sagge14/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