SearchEngine -локальный поисковый движок
Проект создания локальной поисковой системы, дающей возможность полнотекстового поиска по сайтам, указанным в конфигурационном файле.
Система содержит несколько контроллеров, сервисов и репозиторий подключенный к БД PostgreSQL.
На стартой странице системы выводится статистическая информация ("DASHBOARD"), о проиндексированных сайтах и страницах, а также леммах (начальная словарная форма слова), содержащихся на этих страницах
Система позволяет производить как полную индексацию всех страниц на сайтов из списка, так и добавление и переиндексацию отдельно заданных страниц этих сайтов.
В строку запроса для поиска можно вводить как одно слово, так и целую фразу. При этом можно выбирать, где искать - на конкретном сайте или выбрать все сайты.
В результате поиска выводится список наиболее релевантных страниц, где встречаются слова из строки запроса.
Java Core, Spring Boot, JPA, Hibernate, JDBC, Security, PostgreSQL, REST API, JSOUP, Maven, Git, Swagger
Также библиотеки лемматизации - RussianMorphology и стемминга (нахождения основы слова) - stemmer.
Для успешного скачивания и подключения к проекту зависимостей из GitHub необходимо настроить Maven конфигурацию в файле settings.xml
.
Для работы системы в файле pom.xml
необходимо добавить информацмию о фреймворке:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
</parent>
а также ссылку на репозиторий для скачивания зависимостей лемматизатора:
<repositories>
<repository>
<id>github</id>
<name>GitHub Apache Maven Packages - Russian Morphology</name>
<url>https://maven.pkg.github.com/skillbox-java/russianmorphology</url>
</repository>
</repositories>
Также нужно указать подключение следующих зависимостей apache Maven:
spring-boot-starter-security
spring-boot-starter-thymeleaf
spring-boot-starter-web
spring-boot-starter-data-jpa
postgresql
jsoup
Для работы парсинга страниц нужно подключить JSOUP :
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
Для преобразования слов в леммы неообходимо подключение зависимостей morph, morphology, dictionary-reader, english, russian
из источника : org.apache.lucene.morphology
необходимо ещё создать (либо отредактировать если он имеется - в Windows он располагается в директории C:/Users/<Имя вашего пользователя>/.m2) файл settings.xml, в котором указать токен для получения данных из публичного репозитория. В файл нужно внести следующие строки:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>github</id>
<configuration>
<httpHeaders>
<property>
<name>Authorization</name>
<value>Bearer
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</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Стартовая страница поискового движка находится по адресу : http://localhost:8080/
Сразу при старте система запрашивает логин/пароль, которые указаны в файле конфигурации src/resources/application.yml
:
security:
user:
name: user
password: user
roles: user
Для реализации взаимодействия системы SearchEngine со сторонними приложениями в проекте на базе Swagger(OpenAPI 3.0) реализована документация OpenAPI,
которая представляет собой спецификацию с описанием всех методов: создания, использования, визуализации и тестирования
веб-сервисов REST Страница с документацией OpenAPI доступна по адресу :http://localhost:8080/swagger-ui.html
Для настройки документирования OpenAPI необходимо подключить зависимость из репозитория springdoc:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.11</version>
</dependency>