Skip to content

Первый проект в рамках учебного курса: поисковая система

Notifications You must be signed in to change notification settings

YaDanilamaster/cpp-search-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

Поисковая система

Первый проект в рамках учебного курса.

Модель поискового сервера осуществляющего поиск по базе документов с учетом их статуса, рейтинга, а также: стоп слов (исключаемых из запроса) и минус слов (исключающих документы, с указанными словами, из выдачи).

Функционал сервера:

  • Серверу задается набор документов, каждый из которых имеет определенный статус (актуальный, не актуальный, забанен, удален) и рейтинг. Также может указываться список стоп слов, которые не должны учитываться при поиске.
  • Поисковый запрос, с указанием искомых слов и при необходимости минус слов.
  • Результат выдачи содержит топ N наиболее релевантных документов с учетом указанного статуса. Предусмотрена возможность выдачи по страницам. Релевантность документа считается по статистической мере TF-IDF
  • Работа сервера может осуществляться в однопоточном и многопоточном режимах. Для многопоточного режима реализован специальный контейнер, ConcurrentMap, который позволяет организовать одновременное обновление словаря до 100 потоков.

Поскольку проект учебный, сервер выполнен в виде консольного приложения, а данные хранятся в памяти.

В проекте использована только STL, версия языка С++17.

В представленном проекте приведен пример на основе стихотворения «If» написанного Редьярдом Киплингом. В примере сделан запрос на поиск словосочетания «If you can».

В первой выдаче - 5 самых релевантных строк, в последней выдаче - самые релевантные строки среди четных.

ACTUAL by default, execution::seq:
{ document_id = 11, relevance = 0.463734, rating = 1 }
{ document_id = 29, relevance = 0.397486, rating = 1 }
{ document_id = 1, relevance = 0.368319, rating = 1 }
{ document_id = 21, relevance = 0.3478, rating = 1 }
{ document_id = 25, relevance = 0.3478, rating = 1 }

BANNED, execution::seq:

ACTUAL by, even ids, execution::par:
{ document_id = 10, relevance = 0.27824, rating = 1 }
{ document_id = 28, relevance = 0.100087, rating = 1 }

About

Первый проект в рамках учебного курса: поисковая система

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages