S

searchengine

Мой итоговый проект курса Java-разработчик от SkillBox. Поисковой движок. Рабочий вариант

Search engine

Search Engine

Мой итоговый проект курса Java-разработчик от SkillBox

Описание проекта

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

Принципы работы поискового движка

  1. В конфигурационном файле перед запуском приложения задаются адреса сайтов, по которым движок осуществляет поиск.
  2. Поисковый движок самостоятельно находит все страницы заданных сайтов и индексирует их (сохраняет все необходимые данные о странице) так, чтобы потом находить наиболее релевантные страницы по любому поисковому запросу.
  3. Пользователь присылает запрос через API движка. Запрос — это набор слов, по которым нужно найти страницы сайта.
  4. В индексе ищутся страницы, на которых встречаются все эти слова.
  5. Результаты поиска ранжируются, сортируются и отдаются пользователю.

Перечень функционала программы

  • Создание таблиц в БД и работ с ней при помощи технологии Hibernate
  • Многопоточная индексация сайтов при помощи ForkJoinPool
  • Рекурсивный парсинг всех страниц заданных сайтов
  • Индексация страниц, приведение всех слов страницы в леммы
  • Выведение статистики на основе полученных данных
  • Возможность поиска страниц с учетом релевантности по заданному запросу
  • Возможность поиска страниц для отдельного сайта
  • Выведение понятных фрагментов текста из найденных страниц
  • Настроена обработка ошибок через GlobalExceptionHandler
  • Используется Liquibase для управления миграциями БД
  • Реализовано кэширование лемм в LemmaFinder
  • Есть конфигурация через YAML-файлы
  • Используется логгирование ключевых операций

Стек используемых технологий

  • Java 17.0.2
  • Spring Boot 2.7.1
  • Maven 4.0.0
  • ORM Hibernate
  • DB MySQL90
  • Lombok Library
  • JSOUP Library
  • Morphology Library

Инструкцию по запуску проекта

Требования

  • MySQL90
  • JRE
  1. На вкладке Releases->Assets скачать SearchEngin.zip
  2. Разархивировать содержимое в удобное место.
  3. Запустить MySQL, и создать схему с именем "search_engine"
  4. Создайте или измените файл application.yml/yaml в папке SearchEngine/config
  5. Заполнить в этом файле данные для подключения к БД
  6. Можно изменить сайты для индексации ("indexing-settings.sites:") по образцу в документе
  7. Открыть файл Application.java и запустить метод "main"
  8. Зайти в браузер, в поисковике ввести http://localhost:8080/

Работа с веб-интерфейсом

Веб-интерфейс представляет собой одну веб-страницу с тремя вкладками:

  1. Dashboard - На ней отображается общая статистика по всем сайтам, количество заданных сайтов, количество проиндексированных страниц, количество найденных лемм в проиндексированных страницах. А также детальная статистика и статус по каждому из сайтов, время последней индексации (периндексации), найденные леммы, страницы для данного сайта, последняя ошибка если таковая имеется.

    Для получения актуальной информации не забывайте обновлять страницу.

  2. Management - На этой вкладке находятся инструменты управления поисковым движком.

    Кнопка "START INDEXING" или "STOP INDEXING" - запуск и остановка полной индексации (переиндексации).

    Кнопка ADD/UPDATE - добавить (обновить) отдельную страницу по ссылке.

  3. Search - Эта страница предназначена для тестирования поискового движка. На ней находится поле поиска, выпадающий список с выбором сайта для поиска, а при нажатии на кнопку "SEARCH" выводятся результаты поиска по запросу написанному в поле "Query"