E-mail:
Пароль:
Забыли пароль?

Построение поисковой системы на основе СУБД ЛИНТЕР

Построение поисковой системы на основе СУБД ЛИНТЕР

Конференция «Информационные технологии в автоматизированных системах управления специального назначения»

Д. Б. Коваль

В настоящее время во многих государственных и коммерческих организациях реализованы системы электронного документооборота, основанные на обмене файлами различных текстовых форматов. Перед этими организациями остро стоит вопрос поиска информации в архивах, размеры которых порой достигают нескольких сотен гигабайт и насчитывают миллионы файлов. Многие коммерческие поисковые системы оказываются недостаточно эффективными при работе с большими объемами информации. В данной статье рассматривается вариант построения локальной поисковой системы, основанный на использовании встроенных в СУБД ЛИНТЕР средств полнотекстового (фразового) поиска, главным преимуществом которых является высокая скорость поиска и извлечения информации.

Система фразового поиска СУБД ЛИНТЕР обеспечивает:

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

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

Фразовый индекс в СУБД ЛИНТЕР может быть создан для текстовых столбцов, а также для столбцов типа BLOB и EXTFILE . Встроенная в СУБД система конвертеров (или фильтров) позволяет извлекать текст из данных, сохраненных в некотором, отличном от текстового, формате (DOC, RTF, PDF, HTML и т.д.). Для столбцов таблицы необходимо назначить соответствующий фильтр. Для каждого из значений столбцов типа BLOB может быть указан свой фильтр, а для столбцов типа EXTFILE выбор фильтра может быть сделан самой СУБД по расширению файла.

Построение и перестроение фразового индекса – это длительный процесс, поскольку он подразумевает сканирование файлов, извлечение из них текстовой информации и, собственно, создание индекса. Поэтому в разрабатываемой поисковой системе необходимо предусмотреть возможность разделения всей подлежащей индексации информации как минимум на две части (области поиска): на постоянную часть (архивы, которые практически не меняются) и на переменную часть (текущая документация, которая дополняется и модифицируется). Для реальных задач постоянная часть обычно превышает переменную в 10-1000 раз. Предполагается, что постоянная часть информации будет индексироваться однократно, а переменная часть может быть переиндексирована по мере необходимости. Для обеспечения возможности задания областей поиска предлагается следующая модель хранения данных в СУБД (см. Рис. 1).

Рис. 1. Модель хранения данных поисковой системы

Для каждой области поиска создается своя отдельно индексируемая таблица. Если создаваемой поисковой системе необходимо обеспечить хранение файлов текстовых форматов, столбец "FILREF" у таблиц "SEARCH _ FILES_..." должен иметь тип BLOB . Если же требуется только обеспечение быстрого поиска информации в файлах без занесения самих файлов в БД, столбец "FILREF" может иметь тип EXTFILE .

Указанная модель хранения данных в БД была использована при создании поисковой системы, входящей в состав информационно-аналитической системы «НЕВОД-КРЕДИТ» (см. Рис. 2 ).

Рис. 2. Внешний вид пользовательского интерфейса поисковой системы

Основные отличительные особенности этой поисковой системы:

  • возможность организации многопользовательской работы. Задание областей поиска осуществляет администратор системы. Остальные пользователи могут выбирать интересующие их области (одну или несколько) и выполнять поиск;
  • большое число модификаторов поиска (учет регистра, нечеткий поиск и др.), возможность задания логических условий и расстояний между искомыми словами;
  • поддержка большого количества текстовых форматов: DOC, HTML, PDF, PPT, RTF, TXT (в различных кодировках), XLS, XML и др.;
  • возможность извлечения текста из файлов различных текстовых форматов средствами СУБД ЛИНТЕР – с помощью функции GETTEXT [1];
  • возможность осуществления поиска позиций поискового выражения в текстовом файле (для реализации выделения найденных фрагментов в текстовом редакторе) – с помощью функции GETTEXTPOS;
  • высокая скорость поиска (см. Таблица 1, Рис. 3). В качестве времени выполнения поискового запроса в этой таблице приведено среднее время поиска для десяти разных поисковых выражений, состоящих из трех слов (испытания проводились на конфигурации: AMD Athlon XP 2400, 512 Мб, MS Windows 2000 SP 4).

Количество индексируемых файлов, шт.

Суммарный размер индексируемых файлов, Гб

Размер фразового индекса, Гб

Время выполнения поискового запроса, с

10000

2.35

0.288

0.166

20000

4.7

0.570

0.174

30000

7.05

0.855

0.182

40000

9.4

1.148

0.194

50000

11.75

1.372

0.204

Таблица 1. Параметры и результаты выполнения фразового поиска

Рис. 3. Зависимость времени фразового поиска от объема индексируемой информации

Как видно из Рис. 3, время выполнения поискового запроса с увеличением количества индексируемых файлов растет слабо и для 50000 файлов (11.75 Гб) остается значительно меньшим секунды.

Таким образом, для организаций, которым требуется хранение данных средствами СУБД, а также для организаций, которым требуется осуществлять полнотекстовый поиск в локальной вычислительной сети, достаточно привлекательным является вариант построения поисковой системы, основанный на использовании встроенных в СУБД ЛИНТЕР средств фразового поиска. Благодаря тому, что ЛИНТЕР – это российская разработка, всегда можно заказать доработку указанной СУБД, если требуется поддержка специфических форматов данных.

1. Руководство по полнотекстовому поиску в СУБД ЛИНТЕР®// http://linter.ru/ru/documentation/pdf/phrase.pdf


Возврат к списку

ѕрокрутить вверх