Skip to content

DemonZhdb/SearchEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SearchEngine -локальный поисковый движок

Описание

Проект создания локальной поисковой системы, дающей возможность полнотекстового поиска по сайтам, указанным в конфигурационном файле. Система содержит несколько контроллеров, сервисов и репозиторий подключенный к БД PostgreSQL.
На стартой странице системы выводится статистическая информация ("DASHBOARD"), о проиндексированных сайтах и страницах, а также леммах (начальная словарная форма слова), содержащихся на этих страницах

image Система позволяет производить как полную индексацию всех страниц на сайтов из списка, так и добавление и переиндексацию отдельно заданных страниц этих сайтов.

image

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

image

В результате поиска выводится список наиболее релевантных страниц, где встречаются слова из строки запроса.

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

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

OpenAPI

Для реализации взаимодействия системы 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>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published