Доступные версии документации

Фразовые индексы

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

Поскольку в качестве документов могут использоваться документы разных форматов (TXT, DOC, RTF, PDF, HTML и т.д.), то СУБД ЛИНТЕР использует набор специализированных фильтров. Фильтром в СУБД ЛИНТЕР является компонент ядра СУБД (динамическая библиотека – для внешних фильтров; модуль ядра – для встроенных фильтров), который извлекает из документа его текстовое содержимое (в виде потока слов) и свойства (автор, размер, дата создания и т.д.). На вход фильтру подается исходный документ, на выходе возвращается «чистый» текст (т.е. без всяких элементов форматирования). Схема работы фильтра на примере документов WinWord приведена на рисунке 5. Нужные фильтры устанавливаются при настройке СУБД или непосредственно пользователем БД с помощью специальных SQL-операторов.

Схема фильтрации WinWord-документов в СУБД ЛИНТЕР
Рисунок 5. Схема фильтрации WinWord-документов в СУБД ЛИНТЕР

СУБД ЛИНТЕР имеет набор встроенных фильтров для некоторых наиболее распространенных форматов документов, а именно: ASCII (в том числе, в кодировке ANSI, KOIR-8), HTML/XML (в коде ASCII), UNICODE, HTML/XML (в коде UNICODE), RTF, PDF, XLS, XLSX, PPT, PPTX, DOC, DOCX, Open Office, PS.

Тем не менее, не все они обязательно должны использоваться. Это потенциально возможный набор. Чтобы фильтр стал доступным для применения, информация о нем должна быть помещена в БД специальным SQL-запросом. При необходимости пользователи БД могут разрабатывать собственные фильтры для своих специфических форматов данных и включать их в состав СУБД. Для поддержки полнотекстового поиска должны быть выполнены SQL-скрипты search.sql и default.sql.

Для данных типа EXTFILE (внешний файл) СУБД может автоматически подобрать нужный фильтр в зависимости от расширения файла.

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

  • пословное индексирование – индексируется каждое слово, входящее в документ, за исключением слов, отнесенных к стоп-словам. Стоп-слова – это, как правило, высокочастотные служебные слова-предлоги, союзы. Таким образом, из словосочетания «Война и мир» в индекс войдут два слова: «война», «мир». При поиске порядок введенных слов не имеет значения – каждое слово ищется отдельно, затем дубликаты найденных документов исключаются;

  • фразовое индексирование: содержание поля или подполя заносится в индекс целиком. Из словосочетания «война и мир» формируется одно индексное значение – «война и мир». В этом случае для правильного поиска нужно вводить слова в соответствующем порядке.

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

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter