- Поиск страниц на заранее проиндексированных в многопоточном режиме веб-сайтах с учетом морфологии слов на русском и английском языке.
- Результат поиска выдается в виде постраничного списка ссылок на проиндексированные страницы веб-сайтов, отсортированных по степени релевантности относительно поискового запроса.
- Результат поиска можно получить через веб-интерфейс, либо через API.
Java Spring Boot Framework, JPA, JSOUP, MySQL, Morphology Library Lucene
- Для работы поисковой системы необходимо установить:
- Сервер баз данных MySQL, версии не ниже 8;
- Java, версии не ниже 17;
- В СУБД MySQL необходимо создать:
- Пользователя
rootс паролемskillbox; - Схему
search_engine, указав charset/collationutf8иutf8_binсоответственно;
- Пользователя
Для запуска необходимо выполнить команду:
java -jar SearchEngine.jar
Если в консоль выводятся не читаемые символы, то используйте эту команду для запуска:
java -Dfile.encoding=cp866 -jar SearchEngine.jar
Исполняемый файл SearchEngine.jar находится в папке dist данного репозитория.
Веб-интерфейс позволяет управлять процессом индексации и выполнять поиск по проиндексированным страницам веб-сайтов.
После запуска поисковой системы веб-интерфейс доступен по адресу http://localhost:8084/
Веб-интерфейс содержит следующие вкладки:
Эта вкладка открывается по умолчанию. На ней отображается общая статистика по всем веб-сайтам, а также детальная статистика и статус по каждому из веб-сайтов.
На этой вкладке находятся инструменты управления поисковой системой — запуск и остановка полной индексации (переиндексации) страниц веб-сайтов, а также возможность добавить (обновить) отдельную страницу по ссылке.
Эта страница предназначена для выполнения поисковых запросов по проиндексированным страницам веб-сайтов. На ней находится поле поиска, выпадающий список с выбором веб-сайта для поиска, а при нажатии на кнопку «Найти» выводятся результаты поиска.
Взаимодействие поисковой системы с веб-интерфейсом осуществляется посредством отправки запросов к API.
Вызов API доступен по адресу http://localhost:8084/api
| Назначение | Метод | URI вызова | Параметры вызова | Формат ответа в случае успеха | Формат ответа в случае ошибки | Описание |
|---|---|---|---|---|---|---|
| Получение статистики | GET |
|
— |
{
"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 |
|
— |
{
"result": true
} |
{
"result": false,
"error": "Индексация уже запущена"
} |
Метод запускает полную индексацию всех веб-сайтов или полную переиндексацию, если они уже проиндексированы. Если в настоящий момент индексация или переиндексация уже запущена, метод возвращает соответствующее сообщение об ошибке. |
| Остановка текущей индексации | GET |
|
— |
{
"result": true
} |
{
"result": false,
"error": "Индексация не запущена"
} |
Метод останавливает текущий процесс индексации (переиндексации). Если в настоящий момент индексация или переиндексация не происходит, метод возвращает соответствующее сообщение об ошибке. |
| Добавление или обновление индекса отдельной страницы | POST |
|
|
{
"result": true
} |
{
"result": false,
"error": "Страница не найдена"
} |
Метод добавляет в индекс или обновляет отдельную страницу, адрес которой передан в параметр. |
| Получение данных по поисковому запросу | GET |
|
|
{
"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 можно просмотреть логи выполнения процесса индексирования, а так же сообщения об ошибках, возникших в процессе работы поисковой системы.


