Skip to content

Информационно-поисковая система для анализа текстовых данных (с алгоритмами поиска данных). Лемматизация. Нормализация. Индексация.

Notifications You must be signed in to change notification settings

TesterReality/spring-search-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Viazmus

Поисковая система "Viazmus" (используя Spring)

JDK version Database build SpringBoot TemplateEngine ORM

Поисковая система предназначенная для поиска по файлам

Поддерживаемый язык файлов: Английский

Причины создания

Данный проект создан для демонстрации возможностей Spring и в целях личного обучения

Демонстрационный видеоролик

Посмотрите видео!

Объяснение работы (Осторожно! Много текста!)

Допустим, у нас есть корпус текстов - информация, отобранная по определенным правилам. И наша задача - найти необходимую информацию.

Разрабатываемый веб-сервис содержит как клиентскую, так и серверную часть. Любое редактирование/добавление/изменение текстовых файлов будет осуществляться только администратором. Пользователи же смогут только получать результаты на свои поисковые запросы.

Для начала разберемся как в общем виде работает разработанная ИПС. У нас есть файлы исходного текста, они считываются и обрабатываются от шума, происходит Лемматизация.

Чтобы понять, как работает лемматизация, нужно знать, как создаются различные формы слова. Большинство слов изменяется, когда они используются в различных грамматических формах. Конец слова заменяется на грамматическое окончание, и это приводит к новой форме исходного слова. Лемматизация выполняет обратное преобразование: заменяет грамматическое окончание суффиксом или окончанием начальной формы.

После того как все слова в файлах и все файлы прошли Лемматизацию по ним начинается построение Инвертированного индекса.

Если упростить, то берется слово, ищется во всех документах, и формируется файл в котором содержатся все слова (уже лемматизированые), файл, количество и место, где встречаются эти слова (как показано на рисунке ниже).

Viazmus

Каждый файл имеет свой docID, это идентификатор документа, чтобы было легче и быстрее искать. Файл с docID представлен на рисунке ниже.

Viazmus

Для быстроты нахождения слов, все слов были сгрупированны по первой букве.

Viazmus

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

Viazmus

Viazmus

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

Для начала поисковые запрос разбивается на слова, они лемматизируются, а затем происходит поиск в файлах, выясняется сколько раз встречается это слово в файле, затем суммируется количество всех слов из запроса и на основе этого высчитывается релевантность запроса.

Viazmus

Viazmus

Viazmus

При нажатии на имя файла пользователь перейдет на страницу с его содержимым.

Viazmus

Также зарегистрированные пользователи могут изменить (увеличивать) релевантность запроса. Нажав на элемент в интерфейсе, как показано на рисунке ниже.

Viazmus

Администратор может просматривать список доступных в системе файлов.

Viazmus

Администратор может удалить и изменить этот существующий файл или добавить новый. Редактирование существующего файла показано ниже.

Viazmus

Всего в системе существуют 3 категории пользователей: незарегистрированные, зарегистрированные и администратор.

Незарегистрированные пользователи не могут влиять на релевантность документа, а зарегистрированные пользователи могут по своему усмотрению повышать релевантность тех или иных документов. Разница показана на рисунке ниже.

Viazmus

Участие в разработке

Для того, чтобы запустить проект, вам необходимо отредактировать файл application.properties в директории src/main/resources.

Пример для localhost :

spring.datasource.url=jdbc:postgresql://localhost/searchViazmus
spring.datasource.username=postgres
spring.datasource.password=<Ваш пароль>
spring.jpa.generate-ddl=true

#Устанавливаем максимальный размер загружаемых файлов
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=1MB

#Указываем директорию для загрузки файлов
upload.path = upload/

Если все было настроено правильно, Вы сможете запустить проект на Вашей локальной машине. Создавать БД вручную не нужно. За Вас все должен сделать Hibernate

Хотите помочь проекту?

На текущий момент времени существует ряд нерешеных задач:

  • При поиске если нет результатов, сообщить об этом
  • Когда отображаются элементы поиска, выдается информация о том, сколько результатов показано (showing 1-20 of 200 results). Исправить это и сделать верное отображение.
  • При отображении результатов поиска есть меню для сортировки, однако оно не работает. Исправить это.
  • При отображении результатов поиска, сколько бы не было элементов, они все будут отображены на одной странице. Сделать разбивку на страницы.
  • На странице администратра есть пункт меню "Пользователи". Сейчас он неактивен. Там нужно сделать таблицу с возможностью поиска информации об истории запросов определенного пользователя.
    • Сделать возможность администратору менять группу пользователя (на администратора)
  • Сделать адаптивность для всех страниц (верстка)

About

Информационно-поисковая система для анализа текстовых данных (с алгоритмами поиска данных). Лемматизация. Нормализация. Индексация.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published