Skip to content

Git-User-1981/diploma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  1. Поиск страниц на заранее проиндексированных в многопоточном режиме веб-сайтах с учетом морфологии слов на русском и английском языке.
  2. Результат поиска выдается в виде постраничного списка ссылок на проиндексированные страницы веб-сайтов, отсортированных по степени релевантности относительно поискового запроса.
  3. Результат поиска можно получить через веб-интерфейс, либо через API.

Используемые технологии

Java Spring Boot Framework, JPA, JSOUP, MySQL, Morphology Library Lucene

Требования

  1. Для работы поисковой системы необходимо установить:
    • Сервер баз данных MySQL, версии не ниже 8;
    • Java, версии не ниже 17;
  2. В СУБД MySQL необходимо создать:
    • Пользователя root с паролем skillbox;
    • Схему search_engine, указав charset/collation utf8 и utf8_bin соответственно;

Запуск поисковой системы

Для запуска необходимо выполнить команду:

java -jar SearchEngine.jar

Если в консоль выводятся не читаемые символы, то используйте эту команду для запуска: java -Dfile.encoding=cp866 -jar SearchEngine.jar

Исполняемый файл SearchEngine.jar находится в папке dist данного репозитория.

Веб-интерфейс

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

После запуска поисковой системы веб-интерфейс доступен по адресу http://localhost:8084/

Веб-интерфейс содержит следующие вкладки:

Dashboard

Эта вкладка открывается по умолчанию. На ней отображается общая статистика по всем веб-сайтам, а также детальная статистика и статус по каждому из веб-сайтов.

dashboard

Management

На этой вкладке находятся инструменты управления поисковой системой — запуск и остановка полной индексации (переиндексации) страниц веб-сайтов, а также возможность добавить (обновить) отдельную страницу по ссылке.

management

Search

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

search

Взаимодействие поисковой системы с веб-интерфейсом осуществляется посредством отправки запросов к API.

Спецификация API

Вызов API доступен по адресу http://localhost:8084/api

Назначение Метод URI вызова Параметры вызова Формат ответа в случае успеха Формат ответа в случае ошибки Описание
Получение статистики GET

/statistics

{
   "result": true,
   "statistics": {
      "total": {
         "sites": 12,
         "pages": 18322,
         "lemmas": 199768,
         "indexing": false
      },
      "detailed": [
         {
            "url": "https://skillbox.ru/",
            "name": "Skillbox",
            "status": "INDEXED",
            "statusTime": 1673562160790,
            "error": "При наличии ошибки",
            "pages": 7919,
            "lemmas": 101556
         }
      ]
   }

}
{
    "result": false,
    "error": "Сообщение об ошибке"
}
Метод возвращает статистику и другую служебную информацию о состоянии поисковых индексов и самой поисковой системы.
Запуск полной индексации GET

/startIndexing

{
    "result": true
}
{
    "result": false,
    "error": "Индексация уже запущена"
}
Метод запускает полную индексацию всех веб-сайтов или полную переиндексацию, если они уже проиндексированы. Если в настоящий момент индексация или переиндексация уже запущена, метод возвращает соответствующее сообщение об ошибке.
Остановка текущей индексации GET

/stopIndexing

{
   "result": true
}
{
    "result": false,
    "error": "Индексация не запущена"
}
Метод останавливает текущий процесс индексации (переиндексации). Если в настоящий момент индексация или переиндексация не происходит, метод возвращает соответствующее сообщение об ошибке.
Добавление или обновление индекса отдельной страницы POST

/indexPage

url — адрес страницы, которую нужно переиндексировать

{
   "result": true
}
{
    "result": false,
    "error": "Страница не найдена"
}
Метод добавляет в индекс или обновляет отдельную страницу, адрес которой передан в параметр.
Получение данных по поисковому запросу GET

/search

query — поисковый запрос;

site — сайт (например: http://www.site.com), по которому осуществлять поиск, если не задан, поиск выполняется по всем проиндексированным веб-сайтам;

offset — сдвиг от 0 для постраничного вывода (необязательный; если не установлен, то значение по умолчанию равно нулю);

limit — количество результатов, которое необходимо вывести (необязательный; если не установлен, то значение по умолчанию равно 20);

{
   "result": true,
   "count": 18,
   "data": [
      {
         "site": "https://www.site.com",
         "siteName": "Имя сайта",
         "uri": "/path/to/page/6784",
         "title": "Заголовок страницы",
         "snippet": "Фрагмент с совпадениями",
         "relevance": 0.93362
      }
   ]
}
{
    "result": false,
    "error": "Задан пустой запрос"
}
Метод осуществляет поиск страниц по переданному поисковому запросу. Чтобы выводить результаты порционно, также можно задать параметры offset и limit.

Логирование

В процессе работы поисковой системы выполняется логирование. Папка с логами располагается рядом с исполняемым файлом SearchEngine.jar в папке logs.

В файле access.log можно просмотреть логи обращений к API.

В файле search-engine.log можно просмотреть логи выполнения процесса индексирования, а так же сообщения об ошибках, возникших в процессе работы поисковой системы.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks