Научная статья на тему 'Использование полнотекстового поиска в MySQL для определения похожих статей'

Использование полнотекстового поиска в MySQL для определения похожих статей Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
625
170
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
новости / rss / полнотекстовый поиск. / news / rss / full-text searching.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Литвинов А. Е., Измайлова Е. В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FULL-TEXT SEARCHING IN MYSQL FOR ALIKE ARTICLES DETERMINATION

Full-text searching in MySQL for alike articles determination in income flow of news is discussed. As a result of the work program system for periodically import of articles from rss-servers is designed. This one allows to realize alike articles founding.

Текст научной работы на тему «Использование полнотекстового поиска в MySQL для определения похожих статей»

14

Juvenis scientia 2016 № 2 | ИНФОРМАТИКА

ИСПОЛЬЗОВАНИЕ ПОЛНОТЕКСТОВОГО ПОИСКА В MYSQL ДЛЯ ОПРЕДЕЛЕНИЯ ПОХОЖИХ СТАТЕЙ

А. Е. Литвинов*, Е. В. Измайлова

Пермский национальный исследовательский университет Россия, 618404, г. Березники, ул. Тельмана, 7 * email: belinos11@gmail.com

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

Ключевые слова: новости, rss, полнотекстовый поиск.

FULL-TEXT SEARCHING IN MYSQL FOR ALIKE ARTICLES DETERMINATION A. E. Litvinov*, E. V. Izmailova

Perm national polytechnic research university 7 Telmana St., 618404, Berezniki, Russia * email: belinos11@gmail.com

Full-text searching in MySQL for alike articles determination in income flow of news is discussed. As a result of the work program system for periodically import of articles from rss-servers is designed. This one allows to realize alike articles founding.

Keywords: news, rss, full-text searching.

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

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

- отображение пользователю последних новостей. Агрегатор собирает статьи из RSS-лент различных интернет-СМИ, обрабатывает их и записывает в базу данных.

Архитектура системы показана на Рис. 2. Рассмотрим работу RSS-агрегатора более подробно. Система состоит из загрузчика, который запускается cron-задачей каждые пять минут. С помощью Google Feed API - Load Feed загрузчик получает новости из 13 источников, таких как lenta.ru, gazeta. ru, meduza.io и других, и проверяет наличие не загруженных статей. Если такие новости есть, то API возвращает результат в формате JSON. Далее происходит обработка всех полученных параметров, удаляются стоп-слова и ненужные символы и цифры. Затем данные передаются в phpMorphy - библиотеку морфологического анализа, реализованную на платформе PHP. phpMorphy производит лемматизацию слов, т.е. приводит словоформы к лемме - её нормальной (словарной) форме. Слова переводятся в нижний регистр и сортирутся. Затем эта информация попадает в базу данных.

Рис. 1. Внешний вид разработанной системы

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

Рис. 2. Архитектура системы

Для поиска похожих новостей используется полнотекстовый поиск, поддерживаемый MySQL, начиная с версии 3.23. MySQL имеет не самый мощный полнотекстовый поиск и работает только в MylSAM engine, при этом и отсутствует в более скоростном и надежном InnoDB. Основное преимущество полнотекстового поиска - скорость выполнения. Т.к. он базируется на индексации, скорость выполнения запросов может в несколько десятков раз превышать скорость выполнения

COMPUTER SCIENCE | Juvenis scientia 2016 № 2

15

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

Для полнотекстового поиска в MySQL используется следующая конструкция:

МАТСН(имена полей) AGAINST (слова для поиска);

Поиск может работать в разных режимах, которые достаточно сильно между собой отличаются: в натуральном (natural language mode) и логическом (boolean mode). Оба режима разделяют фразу поиска, переданную в AGAINST, на слова. При поиске будут находиться записи, в которых встречается хотя бы одно из указанных слов.

Например, при поиске фразы «рубль упал» будут найдены все строки, в которых встречается слово «рубль» и все строки со словом «упал». Но на практике такой подход неприемлем, так как выдаёт слишком большое количество лишних результатов. Ещё сильнее эта проблема ухудшается если одно слово очень популярно и находится в огромном количестве строк. В таком случае действует так называемое «50% threshold». Это означает, что если слово встречается более чем в 50% всех просматриваемых полей, то оно не будет учитываться, и поиск по этому слову не даст результатов. Т.о. можно предположить, что такой поиск в больших массивах будет малоэффективен.

Обойти проблему можно с помощью второго режима поиска — поиска в логическом режиме. Его преимущество в том, что с помощью некоторых специальных операторов можно управлять значимостью и ролью слов в запросе, а также искать по фразам, а также отсутствует ограничение «50% threshold». Логическй режим можно использовать и без создания полнотекстового индекса, однако это будет работать очень медленно. Для включения логического режима используется синтаксис:

MATCH (...) AGAINST ('...' IN BOOLEAN MODE);

Допустим, на сайте мы увидели новость «Bloomberbg внёс Россию в топ-15 инновационных экономик мира». Проверим в работе оба режима полнотекстового поиска и сравним полученные результаты.

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

SELECT *, MATCH (4tags4) AGAINST ('эксперты экономическом экономик числом чарте топ строчку стране соседями самых россиян рейтинга присудили перспективного отказались общим мира инновационных зарубежные вошла внёс версии ближайшими баллов Россия Россию Нашей Израиль Австрия Bloomberg Bloomberbg') REL FROM Articles4

WHERE MATCH (4tags4) AGAINST ('эксперты экономическом экономик числом чарте топ строчку стране соседями самых россиян рейтинга присудили перспективного отказались общим мира инновационных зарубежные вошла внёс версии

ближайшими баллов Россия Россию Нашей Израиль Австрия Bloomberg Bloomberbg') order by REL desc limit 15;

Соответственно, для поиска в логическом режиме необходимо после тегов добавить ключевые слова IN BOOLEAN MODE, как было показано выше.

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

Из полученного результата можно сказать, что выдвинутая гипотеза о неэффективности натурального поиска при большом объеме данных не подтвердилась. Наличие «50% threshold» в натуральном режиме дает схожие с логическим режимом поиска результаты выборки. Также в натуральном режиме более точно рассчитывается релевантность, это позволяет лучше отсортировать выборку и/или определить величину отсечения нерелевантных результатов. Гипотеза о том, что релевантной, на данном массиве данных, будет выборка из первых 15 строк подтвердилась, оба режима поиска показали близкие результаты, разница лишь в том, что они были показаны в разном порядке.

ЛИТЕРАТУРА

1. Справочное руководство по MySQL [Электронный ресурс] - режим доступа: http://www.mysql.ru/docs/man/Fulltext_Search.html

2. Кутуков Д. С. Применение методов кластеризации для обработки новостного потока [Текст] / Д. С. Кутуков // Технические науки: проблемы и перспективы: материалы междунар. науч. конф. (г. Санкт-Петербург, март 2011 г.). — СПб.: Реноме, 2011. — С. 77-83.

3. Киселев М.В., Пивоваров В.С., Шмулевич М.М. Метод кластеризации текстов, учитывающий совместную встречаемость ключевых терминов, и его применение к анализу тематической структуры новостного потока, а также ее динамики. // Междунар. сб. науч. раб.: Интернет-математика 2005: автоматическая обработка веб-данных. - М.: Яндекс, 2005.

4. Полнотекстовый поиск и его возможности [Электронный ресурс] - режим доступа: http://habrahabr.ru/post/40218/

5. Поиск в MySQL. Часть 3 «FULLTEXT IN BOOLEAN MODE» [Электронный ресурс] - режим доступа: http://valera. ws/2008.04.15~fulltext-in-mysql/

6. Киселев М.В., Эрлих А.И., Шмулевич М.М. Метод автоматической кластеризации текстов и его применение // Международный журнал: Программные продукты и системы, 2008 г. [Электронный ресурс] - режим доступа http://www.swsys.ru/index. php?page=article&id=741

Поступила в редакцию 15.02.2016

i Надоели баннеры? Вы всегда можете отключить рекламу.