Фильтры

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

Так как в качестве документов могут использоваться документы любых форматов (TXT, DOC, RTF, PDF, HTML и т.д.), то обрабатывать все различные форматы в системе полнотекстового поиска нецелесообразно. Логичным решением этой проблемы является система конвертеров (или фильтров), которые занимаются проблемой извлечения собственно текста из данных, сохраненных в некотором, отличном от текстового, формате. На вход фильтру подается поток данных, на выходе получаем чистый текст. Например, используя конвертер HTML, можно получить текст из HTML-документа.

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

СУБД ЛИНТЕР имеет набор встроенных фильтров для некоторых наиболее распространенных форматов.

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

В таблице 1 представлены фильтры, которые могут быть встроены в ядро СУБД ЛИНТЕР (так называемые внутренние).

Таблица 1. Внутренние фильтры СУБД ЛИНТЕР
Имя фильтраФормат входного файла
ASCTEXT2TEXTТекст в кодировке ASCII
ANSI2TEXTТекст в кодировке ANSI
KOI8R2TEXTТекст в кодировке KOI8-R
UNITEXT2TEXTТекст в кодировке UNICODE
UTF82TEXTТекст в кодировке UTF8
RUSTEXT2TEXTТекст в одной из кодировок ASCII, ANSI или KOI8-R
ASCXML2TEXTHTML, XML в коде ASCII
UNIXML2TEXTHTML, XML в коде UNICODE
DOCRTF2TEXTRTF, PDF, DOC, XLS, PPT, DOCX, XLSX, PPTX, ODT, ODS, ODP1)
NOTEXT2TEXTЛюбой. Документ исключается из процесса индексирования.

1)

docx – формат MS Word 2007

xlsx – формат MS Excel 2007

pptx – формат MS PowerPoint 2007

odt – формат OpenOffice.org Writer 3.x

ods – формат OpenOffice.org Calc 3.x

odp – формат OpenOffice.org Impress 3.x

Фильтры возвращают текст в кодировке UNICODE.

Примечание

Информация о всех доступных фильтрах (как внутренних, так и подключенных пользователями) хранится в системной таблице $$$FILTER. Создается путем запуска файла search.sql. Таблица имеет следующую структуру:

CREATE TABLE $$$FILTER
(
  $$$ID     INTEGER,   /* Номер фильтра */
  $$$NAME   CHAR(LINTER_NAME_LENGTH),  /* Имя фильтра */
  $$$KEY    INTEGER,    /* Контрольная сумма внешнего фильтра */
  $$$MODULE CHAR(128), /* Имя библиотеки для внешних фильтров */
  $$$DESC   CHAR(256)  /* Комментарий */
);