Назад в библиотеку

Авторы: Дьяченко Ю.Ю., Мальчева Р.В..
Источник: Программная инженерия: методы и технологии разработки информационновычислительных систем (ПИИВС-2022): сборник научных трудов IV научно-практической конференции (студенческая секция), Том 2, 29-30 ноября 2022 г. – Донецк, ГОУВПО «Донецкий национальный технический университет», 2022. – 200с.


УДК 004.75


Организация поискового индекса при проектировании компьютерной библиотечной системы

Р.В.Мальчева*1, Ю.Ю. Дьяченко*2.
*1 к.т.н, доцент, Донецкий национальный технический университет,
raisa.malcheva@yandex.ru, OrcID: 0000-0003-4983-8878, SPIN-код: 7421-7049
*2 магистрант, Донецкий национальный технический университет,
yury.yurokke@gmail.com

Мальчева Р.В., Дьяченко Ю.Ю. Организация поискового индекса при проектировании компьютерной библиотечной системы. В статье представлен краткий обзор современных проблем при организации поиска книг в информационных библиотечных системах. Выполнен анализ готовых решений для реализации системы и сформированы требования к поисковой системе. Наиболее важным критерием использования современных способов поиска в компьютерных библиотечных системах является минимизация времени, затрачиваемого на поиск, а так же уменьшение размеров баз данных, в которых записаны книги и другие электронные документы, хранящиеся в библиотечной системе. Осуществлен выбор средств организации поискового индекса. Намечены направления дальнейших исследований

Ключевые слова: поиск, запрос, индекс, дерево, лемметазиация, ElasticSearch, Lucene


Введение

Современные технологии компьютеризации и автоматизации библиотек позволяют обеспечивать учёт книжного фонда в электронном формате и организовывать доступ читателю удаленно при помощи сети Интернет [1]. Однако при большом количестве электронных документов появляется необходимость в организации удобного и быстрого поиска необходимой книги, иначе пользователю потребуется тратить часы личного времени, на то чтобы найти нужный файл, что, безусловно, является неприемлемо.

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

В существующих информационных библиотечных системах электронные каталоги организованы таким образом, что пользователь вынужден формулировать конкретные поисковые запросы [2], в которых должно быть правильное название документа или полное совпадение года публикации или даже все фамилии авторов, если у книги их несколько.

Следует отметить, что поиск нужной информации остается проблемой для малоподготовленного пользователя [2], особенно если это касается тематического поиска. Поэтому задача эффективной организации поискового индекса является по-прежнему актуальной.

Cпособы организации поиска

Поиск можно организовать с помощью обычного перебора всей хранимой информации и проверки на соответствие поисковому запросу каждой единицы информации – это называется простым поиском, что будет удобным и обладать приемлемым быстродействием, если нужно искать в сравнительно небольших объемах, к примеру, в одной книге. Но при достижении больших объемов данных, выполнять полный просмотр всей хранимой информации может быть в лучшем случае нерационально, а, зачастую, невозможно физически. Поэтому необходимо применять разные технические и другие ухищрения, чтобы оптимизировать процесс, но при этом не утратить функциональных возможностей поисковой системы. С этой задачей может справиться расширенный поиск, который подразумевает использование ключевых слов [3, 4].

Для организации поиска по ключевым словам, необходимо использовать дополнительную структуру данных – поисковый индекс. Он основан на следующей идее: если взять единицу информации, в нашем случае текст книги, и построить сбалансированное дерево (см.рис. 1), где вершинами будут выступать слова, используемые в тексте, то можно четко оценить, какой набор слов содержится в каждом тексте.

На таком принципе работают многие поисковые системы в сети «Интернет», в которых поиск происходит по всему тексту проиндексированных страниц, а не по отдельным заголовкам, тегам или полям. Такой способ называется полнотекстовым поиском.

Рисунок 1 – Стандартное дерево поиска по ключевым словам

В случае организации поиска книг искать предстоит среди большого количества документов. Поэтому имеет смысл знать, что в каком документе лежит. В этом случае необходимо перевернуть дерево (см.рис. 2). Тогда будет производится поиск по ключевому слову, к которому привязаны книги, что позволит в разы сократить время поиска по книгам. При добавлении новых данных дерево нужно будет достраивать таким же способом.

Рисунок 2 – Обратное дерево поиска по ключевым словам

В результате всегда точно известно, какое слово встречается в каких текстах. С учетом того, что в любом языке количество слов ограничено, то и дерево будет увеличиваться только за счет роста связей между узлами и добавлением одного узла на каждую новую единицу информации. Такой способ хранения ключевых слов позволит иметь базу данных в разы меньшего объёма, чем при использовании стандартного способа, при котором хранятся книга-ключи, а не наоборот.

Описанный способ не является окончательным и наилучшим решением. Так как, например, любое слово имеет множество вариаций, с разными окончаниями, суффиксами, приставками и даже числами, хранить каждый вариант одного слова будет пустой тратой места и увеличением времени поиска в десятки раз. Следовательно, необходимо все слова приводить к их леммам – начальной, словарной форме слова. Этот процесс называется лемматизацией, при нем не важно, в какой конкретно форме находится слово. Использование лемм позволяет сократить количество исходных слов, которые будут храниться в качестве ключевых слов, что, следовательно, позволит уменьшить размер базы данных в десятки раз, ведь одно слово может встречаться в одной книги в своих десяти разных формах и, если хранить не в леммах, то только на одном слове будет несколько отдельных записей в базе данных, и к каждому будут записываться связанные с ним книги.

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

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

Требования к поисковой системе

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

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

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

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

Выбор готового решения

Для использования доступны такие поисковые системы: Solr, ElasticSearch, Sphinx, Splunk, Algolia и многие другие. Почти все они обещают в той или иной мере реализовать вышеописанные требования, так как они являются типовыми задачами в данной сфере. В рамках статьи выберем одну из систем и проверим, насколько она соответствует поставленным задачам. Сравнение произведем с ElasticSearch, ввиду ее популярности и небольшого опыта автора в его использовании, в то время как подобный опыт использования других систем вовсе отсутствует.

ElasticSearch (ES) — поисковая система, которая предоставляет интерфейс json rest api. Использует Lucene [5] и написана на языке программирования Java. Она хранит данные в виде документов, то есть является документо-ориентированной системой управления баз данных (СУБД). Такой подход выбран по причине того, что информация, использующаяся для индексации, может быть разделена на большое количество сущностей, и представление таких данных в классическом реляционном виде повлекло бы за собой создание большого количества связей и соответственно временные издержки при доступе к данным.

Огромным бонусом является то, что ElasticSearch предоставляет возможность использовать данные, как и в обычном СУБД, то есть не уступает в функционале аналогичным решениям. Это позволяет хранить часть данных только в ElasticSearch и не дублировать их. Для проектируемой библиотечной системы это полезно в двойне, ведь основная часть данных – книги - будут храниться в отдельном файловом хранилище, а метаданные можно хранить напрямую в ElasticSearch. Благодаря такому решению можно избавиться от отдельной СУБД для метаданных.

Lucene — популярная open-source библиотека полнотекстового поиска. Предоставляет основной функционал для построения поискового индекса

ElasticSearch предоставляет возможность хранить данные распределено, то есть осуществлять горизонтальное масштабирование. Также используется и репликация данных, для отказоустойчивости. Поисковый индекс тоже может быть распределенным, что обеспечивает скорость и безопасность системы

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

Выводы

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

Современные поисковые системы, такие как ElasticSearch, способны организовывать необходимую скорость поиска и возможность масштабирования книжного хранилища в электронной библиотеке, что позволяет снизить трудоемкость работы при проектировании системы и её дальнейшей поддержке. Исходя из этого направлением дальнейших исследований является реализация компьютерной библиотечной системы с реализацией поискового индекса на базе ElasticSearch.

Литература:

1. Дьяченко, Ю.Ю. Выбор технических средств для реализации хранилища данных при создании электронной библиотеки / Ю.Ю. Дьяченко, Р.В. Мальчева // Информационное пространство Донбасса: проблемы и перспективы : материалы V Респ. с междунар. участием науч.-практ. конф., 27 окт. 2022 г. – Донецк : ГО ВПО «ДонНУЭТ», 2022. – С. 118-120.

2. Организация поиска и навигации в электронном каталоге библиотеки [Электронный ресурс]. – Режим доступа: https://cyberleninka.ru/article/n/organizatsiya-poiska-i-navigatsii-v-elektronnom-kataloge-biblioteki. - Загл. с экрана.

3. Стратегия поиска информации в библиотеке [Электронный ресурс] – Режим доступа: https://studopedia.ru/17_118391_strategiya-poiska-informatsii-v-biblioteke.html. - Загл. с экрана.

4. Электронные каталоги библиотек: технология поиска и заимствования [Электронный ресурс] – Режим доступа: https://lib.1sept.ru/view_article.php?id=200901815. - Загл. с экрана.

5. С чего начинается Elasticsearch [Электронный ресурс] – Режим доступа: https://habr.com/ru/post/489924/. - Загл. с экрана.

Мальчева Р.В., Дьяченко Ю.Ю. Организация поискового индекса при проектировании компьютерной библиотечной системы. В статье представлен краткий обзор современных проблем при организации поиска книг в информационных библиотечных системах. Выполнен анализ готовых решений для реализации системы и сформированы требования к поисковой системе. Наиболее важным критерием использования современных способов поиска в компьютерных библиотечных системах является минимизация времени, затрачиваемого на поиск, а так же уменьшение размеров баз данных, в которых записаны книги и другие электронные документы, хранящиеся в библиотечной системе. Осуществлен выбор средств организации поискового индекса. Намечены направления дальнейших исследований

Ключевые слова: поиск, запрос, индекс, дерево, лемметазиация, ElasticSearch, Lucene

Malcheva R. V., Dyachenko Yu. Yu. Organization of the search index in the design of a computer library system. The article presents a brief overview of modern problems in organizing the search for books in information library systems. The analysis of ready-made solutions for the implementation of the system is carried out and the requirements for the search engine are formed. The most important criterion for using modern search methods in computer library systems is to minimize the time spent on searching, as well as to reduce the size of databases in which books and other electronic documents stored in the library system are recorded. The choice of means of organizing the search index has been made. The directions of further research are outlined.

Keywords: search, query, index, tree, lemmatization, ElasticSearch, Lucene