НАЧАЛО >> Руководство пользователя >> Полнотекстовые операции и фасетный кеш📄 Скачать в DOCX
Раздел фиксирует текущее состояние работ по операциям irbistool для полнотекстовых данных и фасетов. Часть операций уже доступна из окна управления БД, остальные остаются в плане реализации и требуют отдельного стенда с PDF/FT-данными.
emptyftdb уже доступна как операция очистки embedded FT-БД. Она очищает полнотекстовую БД и снимает признаки неактуальности FT-записей в основной БД потоковым проходом.
cells доступна как команда Индекс -> Построить facet cache в окне Управление БД.... Операция запускается через очередь, работает через Database и DP_Irbis64Native, строит файлы <db>.cell0 и <db>.cell1...N по списку префиксов из <db>.cells и добавляет служебные индексные facet-термины =<facet>....
delcells представлена командой Индекс -> Пересобрать текстовые facet-термины. Это не простое удаление файлов: операция пересобирает текстовый <db>.cell из уже существующих индексных facet-терминов и удаляет эти термины из native-индекса. Compare на копии IBIS подтверждает сценарий cells -> delcells; runtime-smoke очереди на IBIS3 проверяет маршрут и progress, но из-за малого размера БД не заменяет функциональный compare на копии IBIS. Остается performance-инкремент.
ftinput доступна как команда Полный текст -> Ввести PDF/FT файлы... в окне Управление БД.... Операция запускается через очередь, принимает только относительные имена или пути внутри разрешенных PAR-путей 10/11 и выполняется через Database/DP_Irbis64Native.
pdfclean доступна как команда Полный текст -> Очистить PDF.... Операция принимает один или несколько PDF через загрузку файлов, при необходимости принимает пароль PDF, запускается через очередь, пишет результат во внутренний workdir и отдает очищенный PDF через страницу скачивания. Если результатов несколько, скачивается ZIP-архив. Произвольные server-side -src и -dst в интерфейсе не используются.
ftcache доступна как команда Полный текст -> Построить кеш страниц.... Операция запускается через очередь, работает по PDF-ссылкам из записей БД, поддерживает диапазон MFN, список MFN, поисковое выражение, последовательный отбор и режим удаления кеша. Пользовательский интерфейс не принимает произвольные server-side пути к PDF или каталогу кеша.
lucene не реализуется в управлении БД по принятому решению: команда условная, не относится к текущему native MST/XRF/IFP/embedded FT покрытию.
ftinputОперация вводит PDF как полнотекстовые записи. В irbistool источник задается параметром -src: это может быть файл, каталог или маска PDF. Относительные пути ищутся относительно пути полнотекстов из PAR-файла БД.
Для каждого PDF создается запись через модельное поле 955, затем применяется формат из настройки AddText_ShablonPFT. После этого выполняется проверка через DBNFLC. Запись сохраняется без обычной актуализации индекса и получает отдельную обработку признака актуальности FT.
В ИРБИС 128 команда Полный текст -> Ввести PDF/FT файлы... принимает список файлов: по одному имени или относительному пути в строке. Абсолютные пути и выход из разрешенных каталогов не допускаются. Файлы должны находиться в каталоге БД или в каталоге полнотекстов, заданных PAR-путями 10/11.
Если файл еще не размещен на сервере, его можно загрузить из окна операции кнопкой Загрузить. Загрузка принимает PDF/TXT, проверяет право EDIT, вычисляет PAR 11 внутри Database, запрещает upload, если PAR 11 находится вне каталога БД, и сохраняет файл в подкаталог __i128_ftinput_uploads/<uploadId>/. В очередь передается только относительный путь, например __i128_ftinput_uploads/ftinput-.../sample.pdf; произвольный server-side путь пользователь не задает.
По умолчанию операция повторяет подтвержденный результат текущего irbistool.exe ftinput: создает новую основную запись с 955^A и не создает FT-страницы немедленно. Отдельный параметр Сразу создать FT-страницы включает расширенный native-режим ИРБИС 128; его нужно применять только на подготовленной копии или после резервного копирования, потому что он дополнительно изменяет embedded FT-БД. На контрольной копии IBIS этот режим создал 14 FT-страниц для одного PDF, поэтому перед запуском на рабочей БД нужно учитывать рост embedded FT-БД и время извлечения текста из PDF.
Операция возвращает отчет по каждому файлу: исходное имя, найденный путь, MFN созданной записи и код результата. При запуске через очередь монитор показывает progress по обработанным файлам. Runtime-smoke и runtime upload+queue smoke проверены на тестовой IBIS3 с backup/restore: задачи завершились успешно, создали тестовую запись и после проверки БД была восстановлена.
ftcacheОперация строит или удаляет кеш страниц и текста PDF. Она работает только для БД формата 2018+ с открытой embedded FT-БД. Имя PDF берется из поля, заданного настройками PDF_FileName_Tag и PDF_FileName_Tag_Subfield; по умолчанию это 955^A.
Выборка записей поддерживает диапазон MFN, список MFN, поисковое выражение и последовательный отбор. При режиме удаления удаляется папка кеша конкретного PDF. При построении кеша учитываются настройки хранения страниц и текста, включая STORE_PAGES_IN_CASH, STORE_TXT_PAGES_IN_CASH, USE_PDF_MD5_IN_CASH и PDFPassword.
В ИРБИС 128 операция реализована через Database/FtCache и native-контекст DP_Irbis64Native. Провайдер берет PDF только из записи БД и разрешенных PAR-путей 10/11, строит кеш в workdir/cashdir, по умолчанию создает текстовые страницы и может отдельно кешировать PDF-страницы. Режим удаления удаляет только рассчитанный каталог конкретного PDF внутри cashdir.
Проверка tools/DP_Irbis64NativeFtCacheSelfTest.php C:\i128\instances\irbis128.local\irbis64 IBIS создала для MFN 3 (Android_Deit.pdf) 560 текстовых страниц в workdir/cashdir\IBIS\..., затем режим удаления удалил рассчитанный каталог кеша. Пиковая память на проверке составила 4194304 байта.
Strict compare tools/DP_Irbis64NativeFtCacheCompare.php C:\i128\instances\irbis128.local\irbis64 IBIS 3 C:\i128\instances\irbis128.local\irbis64 проверяет шесть режимов: TXT cache, PDF-page cache, TXT/PDF cache с USE_PDF_MD5_IN_CASH, TXT cache с PDFPassword, PDF-page cache с PDFPassword и удаление кеша. В каждом режиме сравниваются 562 файла кеша; TXT-файлы сравниваются по содержимому, PDF-страницы - семантически по PDF header, количеству страниц и извлеченному тексту, потому что разные генераторы PDF могут давать разные байты при одинаковой странице.
Последний полный compare подтвердил совместимость и скорость на контрольном PDF: TXT native 2.420413 с против irbistool 2.089918 с; PDF native 18.174650 с против 11.560173 с; TXT+MD5 native 2.541461 с против 8.530224 с; PDF+MD5 native 17.513354 с против 18.015668 с; TXT+password native 2.641426 с против 3.420287 с; PDF+password native 17.624182 с против 26.388908 с. Для PDF-page cache с паролем native один раз расшифровывает PDF во временный файл и затем режет страницы быстрым mutool merge; временный файл удаляется после обработки и при отмене.
Для больших БД операция должна выполняться через очередь с прогрессом по MFN и страницам PDF. Нельзя заранее загружать полный список записей, страниц или кеш-файлов в память.
cells и delcellsФасеты управляются файлами рядом с инвертированным файлом БД. Список facet-префиксов хранится в <db>.cells.
cells строит facet cache: проходит словарь по каждому префиксу из <db>.cells, применяет лимиты MAX_POSTINGS_NUMBER_IN_CELL и MAX_LENGTH_CELL_TERM, создает текстовый рабочий <db>.cell, бинарные <db>.cell1...N и копию <db>.cell0. После построения временный <db>.cell применяется к native-индексу как набор служебных терминов =<facet>... и удаляется. Запуск из ИРБИС 128 выполняется через очередь из окна Управление БД....
delcells по названию выглядит как удаление, но фактически пересобирает временный <db>.cell из уже существующих индексных facet-терминов и удаляет точные postings этих терминов из native-индекса. Поэтому в интерфейсе эту операцию нельзя описывать как простую очистку файлов без пояснения результата.
Текущий GetFasets в DP_Irbis64Native читает готовые <db>.cells и <db>.cellN. CreateFacetCells добавляет управляемое построение этих файлов через Database; UI и другие модули не обращаются к provider context напрямую.
Проверка CreateFacetCells и RebuildFacetCellTerms выполняется на копии БД скриптом tools/DP_Irbis64NativeFacetCellsCompare.php. Для IBIS подтверждено побайтное совпадение <db>.cell0 с результатом irbistool.exe cells; бинарные <db>.cellN совпадают по размеру и множеству пар MFN/tag. У части бинарных файлов порядок пар может отличаться, потому что irbistool сортирует их нестабильным qsort только по MFN, без сравнения tag при равных MFN.
В проверенном сценарии CreateFacetCells добавляет 646 индексных facet-терминов =<facet>... по эталонному <db>.cell0, а RebuildFacetCellTerms удаляет эти 646 терминов из native-индекса. Временный <db>.cell после применения к индексу удаляется.
Диагностическое расхождение irbistool: после irbistool.exe cells и после irbistool.exe delcells текущий PHP-ридер native-провайдера видит только один служебный facet-термин из 646 ожидаемых по <db>.cell0. Исходный код irbistool при этом вызывает служебную актуализацию facet-терминов. Это поведение не переносится в ИРБИС 128 как целевое; оно фиксируется как отдельный диагностический вопрос или возможная несовместимость инкрементальной правки словаря C++-утилитой с текущим PHP-ридером.
pdfclean
Окно очистки PDF
В irbistool операция принимает один PDF, каталог или маску PDF и пишет очищенные PDF в отдельный каталог результата с теми же именами файлов. Параметр -i фактически не используется; учитывается пароль из настройки PDFPassword.
В ИРБИС 128 текущий инкремент реализован как безопасная файловая queued-операция для PDF-файлов. Пользователь загружает файлы в окно операции; вход сохраняется только во внутренний workdir irbistool-pdfclean/_uploads/<uploadId>/input, результат пишется только в irbistool-pdfclean/<runId>/output и скачивается через контролируемую страницу Database/DownloadPdfCleanResult. Если очищен один PDF, страница скачивания возвращает PDF; если очищено несколько PDF, возвращается ZIP-архив. Если PDF защищен паролем, пароль можно указать в поле операции; он передается только в обработку и не записывается в отчет результата. Произвольные server-side -src, -dst, маски и каталоги в интерфейсе использовать нельзя.
Проверочный self-test на Пример PDF-файла.pdf подтвердил создание PDF-результата с header %PDF-; irbistool.exe pdfclean на том же входном файле также создает корректный PDF, совпадающий с native-результатом по размеру и SHA1. Для проверки PDFPassword self-test создает зашифрованный PDF, запускает native PdfClean с паролем и irbistool.exe pdfclean -i с настройкой MAIN/PDFPassword; оба результата имеют header %PDF- и одинаковый размер. Runtime upload+queue smoke через Apache подтвердил загрузку одного PDF, выполнение очереди и скачивание результата. Batch-smoke подтвердил загрузку двух PDF, обработку обоих файлов и скачивание ZIP-архива. Password-smoke подтвердил обработку зашифрованного PDF с переданным паролем.
Database и provider-модуля;irbistool.exe на одинаковом стенде: файлы кеша, facet-файлы, записи FT-БД, поисковые/фасетные результаты и время выполнения.