Фильтры
Быстрый поиск документов в системе полнотекстового поиска возможен только с помощью индексирования входящих в документ слов. Перед индексацией тексты должны быть преобразованы к некоторому стандартному представлению. Например, с точки зрения смыслового значения (т.е. поискового запроса) приведенные визуальные фрагменты текста являются идентичными:
Так как в качестве документов могут использоваться документы любых форматов (TXT, DOC, RTF, PDF, HTML и т.д.), то обрабатывать все различные форматы в системе полнотекстового поиска нецелесообразно. Логичным решением этой проблемы является система конвертеров (или фильтров), которые занимаются проблемой извлечения собственно текста из данных, сохраненных в некотором, отличном от текстового, формате. На вход фильтру подается поток данных, на выходе получаем чистый текст. Например, используя конвертер HTML, можно получить текст из HTML-документа.
Фильтром в СУБД ЛИНТЕР называется динамическая библиотека, которая извлекает из документа его содержимое (в виде потока текста) и свойства (автор, размер, дата создания и т.д.). Нужный фильтр устанавливается при настройке СУБД или непосредственно специальными операторами языка SQL.
СУБД ЛИНТЕР имеет набор встроенных фильтров для некоторых наиболее распространенных форматов.
Фильтры являются подключаемыми модулями (библиотеками), любой пользователь БД может написать собственный фильтр для нужного типа файлов и включить его в СУБД (пункт Создание внешнего фильтра).
В таблице 1 представлены фильтры, которые могут быть встроены в ядро СУБД ЛИНТЕР (так называемые внутренние).
Имя фильтра | Формат входного файла |
---|---|
ASCTEXT2TEXT | Текст в кодировке ASCII |
ANSI2TEXT | Текст в кодировке ANSI |
KOI8R2TEXT | Текст в кодировке KOI8-R |
UNITEXT2TEXT | Текст в кодировке UNICODE |
UTF82TEXT | Текст в кодировке UTF8 |
RUSTEXT2TEXT | Текст в одной из кодировок ASCII, ANSI или KOI8-R |
ASCXML2TEXT | HTML, XML в коде ASCII |
UNIXML2TEXT | HTML, XML в коде UNICODE |
DOCRTF2TEXT | RTF, 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) /* Комментарий */ );