Categorygithub.com/julinserg/OtusAlgorithmHomeProject
repository
0.0.0-20230731122442-001585046873
Repository: https://github.com/julinserg/otusalgorithmhomeproject.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

GitHub CI

Cервис "Мини-поисковик по базе текстов"

Принцип работы

Есть две таблички в базе данных, в одной лежат сами документы (так называемый "прямой индекс", первичный ключ – ID документа), в другой слова из этих документов (так называемый "обратный индекс", первичный ключ – слово). Каждое слово сопровождается информацией о том в каком документе оно встречается и на какой позиции. При добавлении нового документа происходит обновление обоих этих табличек. При выполнении запроса происходит разбор запроса на слова, по каждому слову выполняем запрос к БД к таблице с "обратным индексом" и получаем информацию о том в каких документах это слово встречается. Нам необходимо вернуть только те документы, в которых встречаются все слова из запроса, поэтому формируем пересечение множеств документов всех слов из запроса. В результате возвращаем список из названия документа и контекста, в котором встретилось слово/слова в документе. Для определения контекста позицию слова в тексте в момент запроса НЕ вычисляем, а берем из таблицы с "обратным индексом".

Демо

https://github.com/julinserg/OtusAlgorithmHomeProject/assets/10730927/9b606ab9-64f3-4dfd-9551-98d4a7ac91c8