Страницу Назад
Поискать другие аналоги этой работы

1000

Дипломный проект SearchEngine - Поисковый движок -2022 год

ID: 237576
Дата закачки: 03 Июля 2023
Продавец: StudentHelp (Напишите, если есть вопросы)
    Посмотреть другие работы этого продавца

Тип работы: Диплом и связанное с ним
Сдано в учебном заведении: Skillbox

Описание:
Дипломный проект SearchEngine - Поисковый движок -2022 год.

Данный проект реализует поисковый движок, предоставляющий пользователю специальный API со следующими основными функциями:

предварительное индексирование сайтов;
выдача основных сведений по сайтам;
поиск ключевых слов в проиндексированных сайтах и предоставление их пользователю.

Комментарии: Дипломный проект SearchEngine - Поисковый движок -2022 год.

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

Страница содержит три вкладки:

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

- Вкладка MANAGEMENT (см. приложенные файлы)
На этой вкладке находятся инструменты управления поисковым движком — запуск (запрос /startIndexing) и остановка (запрос /stopIndexing) полной индексации (переиндексации), а также возможность добавить (обновить) отдельную страницу по ссылке (запрос /indexPage/{pagePath}). Отметим, что если в последнем запросе присутствует только URL сайта без завершающего слэша (/), как в приведённом выше скриншоте, то индексироваться будет указанный сайт целиком.

- Вкладка SEARCH (см. приложенные файлы)
Эта вкладка предназначена для тестирования поискового движка. На ней находится поле поиска и выпадающий список с выбором сайта, по которому искать, а при нажатии на кнопку SEARCH выводятся результаты поиска (по запросу /search).

Кодировка страницы (см. приложенные файлы)
На всех вкладках присутствует выпадающий список Language (Язык). При выборе одного из двух вариантов — English или Русский — соответственно поменяется кодировка страницы.
Пример русской раскладки:(см. приложенные файлы)

Файлы настройки:

Данное приложение по выбору может работать либо с СУБД MySQL, либо с СУБД PostgreSQL. Выбор зависит от значения параметра spring.profiles.active в конфигурационном файле application.yaml, который определяет профиль и находится в корне проекта. Параметр может принимать одно из двух значений:

mysql — для работы с MySQL;
postgresql — для работы с PostgreSQL.
В зависимости от значения заданного профиля подключается один из двух соответствующих конфигурационных файлов: application-mysql.yaml или application-postgresql.yaml, которые тоже находятся в корне проекта.

Приложение допускает подключение и к другим реляционным БД. Для этого, по аналогии с PostgreSQL, нужно создать файл application-{profilename}.yaml, скрипт для генерирования объектов БД — schema-{profilename}.sql и скрипт для наполнения таблицы field — data-{profilename}.sql. Кроме того, в файле pom.xml нужно подключить подходящую зависимость, обеспечивающую работу с выбранной БД.

Раздел server
В этом разделе задаётся параметр port — порт, через который контроллеры приложения "слушают" веб-запросы. Задавая разные порты, можно, например, из разных папок, в которых находятся файлы настройки, запустить несколько экземпляров приложения.

Также задаётся параметр indexingAvailable, который разрешает или запрещает данному экземпляру приложения индексировать сайты. При любом значении параметра — true или false — разрешены поиск по сайтам и просмотр статистики.

Раздел spring
Здесь задаются параметры СУБД, в которой приложение хранит данные конфигурации. Некоторые параметры общие для всех СУБД и они находятся в файле application.yaml. Специфичные для выбранной СУБД параметры находятся в соответствующих файлах application-{profilename}.yaml

Следует отметить важность параметра spring.jpa.hibernate.ddl-auto и отличия его применения в двух случаях:

СУБД MySQL. База данных создаётся на основе классов из пакета main.model. В том случае, когда параметр принимает значение create, при запуске приложения база данных пересоздаётся, то есть содержимое всех таблиц БД уничтожается. При следующих запусках значение этого параметра следует установить в update.
Другие СУБД. База данных создаётся скриптом schema-{profilename}.sql. При этом параметр spring.jpa.hibernate.ddl-auto должен принимать значение none. Теперь поведение системы зависит от параметра spring.sql.init.mode: если он принимает значение always, то при запуске приложения база данных пересоздаётся. Если он принимает значение never, то база данных остаётся прежней.
Раздел logging
Здесь можно задать уровень логирования level.root и имя файла журнала file.name.

Раздел config
На режим индексации влияют следующие параметры:

forSitesThreadNumber — максимальное количество потоков, в которых могут параллельно индексироваться различные сайты;
forPagesThreadNumber — максимальное количество потоков, в которых могут индексироваться страницы каждого сайта. Когда наложено ограничение на минимальный интервал обращения к конкретному сайту (об этом ниже), то 2–3 потока вполне достаточно. Если такого ограничения нет, то значение 8 данного параметра значительно ускорит процесс индексирования;
repeatedPageCount — один из параметров, позволяющих ограничить количество индексируемых страниц;
maxPagesInSite — когда количество страниц для данного сайта достигает этого значения, индексация сайта останавливается. Чаще всего ещё несколько страниц будет проиндексировано после достижения maxPagesInSite.
synchronizePageSave — разрешает или запрещает включение оператора synchronize при сохранении записи в таблицу page. Для СУБД MySQL параметр должен быть установлен в true, для PostgreSQL может быть установлен в false.
multiInsertString — в этом параметре определена подстрока специфичного для каждой СУБД запроса множественной вставки.
Список sites
Здесь приведён список сайтов, которые программа будет в состоянии индексировать. Каждый сайт характеризуется следующими параметрами:

url — адрес сайта. Если в адресе присутствует страница (как, например, в случае https://et-cetera.ru/mobile), то всё равно индексирование начнётся с главной страницы (как если бы в параметре было указано https://et-cetera.ru);
name — имя сайта. Оно, в частности, выводится в списке сайтов на вкладке DASHBOARD;
pause — минимальный интервал обращения к одному сайту при индексировании, выраженный в миллисекундах. Параметр может принимать положительные значения и 0. При нуле задержек между обращениями не будет.
Используемые технологии
Приложение построено на платформе Spring Boot.

Необходимые компоненты собираются с помощью фреймворка Maven. Maven подключает следующие относящиеся к Spring Boot стартеры:

spring-boot-starter-web — подтягивает в проект библиотеки, необходимые для выполнения Spring-MVC функций приложения. При этом обмен данными между браузером и сервером выполняется по технологии AJAX;
spring-boot-starter-data-jpa — отвечает за подключение библиотек, требующихся для работы приложения с базой данных;
spring-boot-starter-thymeleaf — шаблонизатор веб-страницы программы.
Для загрузки и разбора страниц с сайтов используется библиотека jsoup.

Данная версия программы работает с СУБД MySQL. Для этого подключается зависимость mysql-connector-java.

Для удобства написания (и чтения) программного кода и для расширения функциональности языка Java используется библиотека Lombok (зависимость lombok).

Запуск программы
Репозиторий с приложением SearchEngine находится по адресу https://github.com/vrpanfilov/SearchEngine.git.

Если проект загрузить на локальный диск, то он готов к тому, чтобы его можно было скомпилировать и запустить с помощью среды разработки IntelliJ IDEA.

Перед первой компиляцией программы следует выполнить следующие шаги:

Установить СУБД — одну или несколько, если они ещё не установлены.
В базе данных создать схему search_engine. Имя схемы может быть и другим, но тогда это должно быть отражено в параметре spring.datasource.url в файле application-{profilename}.yaml.
В схеме нужно создать пользователя se_user с паролем se_user. Пользователь и пароль могут быть другими, это опять же должно соответствовать параметрам spring.datasource.username и spring.datasource.password в файле application-{profilename}.yaml.
Установить параметры jpa.hibernate.ddl-auto и, если нужно, параметр spring.sql.init.mode так, как это описано выше.
Установить фреймворк Apache Maven, если он ещё не установлен.
В командной оболочке (например, PowerShell) перейти в корневой каталог проекта и выполнить пакетный файл init_morphology.cmd:
.\\init_morphology.cmd.

Теперь приложение можно компилировать и запускать из программной среды.

Приложение может быть также запущено командной строкой. Для этого оно должно быть скомпилировано в панели Maven среды разработки командой package: (см. приложенные файлы).

Результат компиляции, SearchEngine-0.0.1-SNAPSHOT.jar, будет располагаться в папке target. Этот файл можно перенести в любую доступную папку на компьютере, при этом в той же папке должны находиться файлы application.yaml и application-{profilename}.yaml. Приложение запускается строкой

java -jar SearchEngine-0.0.1-SNAPSHOT.jar.

Можно поступить и так. В несколько папок — например, d:\\aaa, d:\\bbb — положить набор файлов настройки application.yaml и application-{profilename}.yaml.

Файлы application.yaml будут отличаться параметром server.port. А приложение SearchEngine-0.0.1-SNAPSHOT.jar можно поместить, например, в папку d:\\search_engine. Тогда, перейдя, последовательно в папки d:\\aaa и d:\\bbb, можно запустить два экземпляра программы командой

java -jar d:\\search_engine\\SearchEngine-0.0.1-SNAPSHOT.jar.

Эти экземпляры будут "слушать" разные порты и не мешать друг другу при условии, что только у одного экземпляра приложения параметр конфигурации server.indexingAvailable принимает значение true.

Размер файла: 8,9 Мбайт
Фаил: Упакованные файлы (.zip)

   Скачать

   Добавить в корзину


    Скачано: 1         Коментариев: 0


Есть вопросы? Посмотри часто задаваемые вопросы и ответы на них.
Опять не то? Мы можем помочь сделать!

Некоторые похожие работы:

К сожалению, точных предложений нет. Рекомендуем воспользоваться поиском по базе.

Не можешь найти то что нужно? Мы можем помочь сделать! 

От 350 руб. за реферат, низкие цены. Просто заполни форму и всё.

Спеши, предложение ограничено !



Что бы написать комментарий, вам надо войти в аккаунт, либо зарегистрироваться.

Страницу Назад

  Cодержание / Дипломные проекты / Дипломный проект SearchEngine - Поисковый движок -2022 год
Вход в аккаунт:
Войти

Забыли ваш пароль?

Вы еще не зарегистрированы?

Создать новый Аккаунт


Способы оплаты:
UnionPay СБР Ю-Money qiwi Payeer Крипто-валюты Крипто-валюты


И еще более 50 способов оплаты...
Гарантии возврата денег

Как скачать и покупать?

Как скачивать и покупать в картинках


Сайт помощи студентам, без посредников!