Как исправить медленный поиск или загрузку контента в PaperOffice путем пересоздания индексов FULLTEXT

сли поиск или загрузка контента в PaperOffice работает медленно, пересоздание всех индексов FULLTEXT в базе данных MariaDB с помощью HeidiSQL может улучшить производительность. Всегда сначала сделайте резервную копию базы данных, следуйте пошаговому руководству и перезапустите службу MariaDB после внесения изменений. Вы несете ответственность за любые проблемы или потерю данных.
Timo Inglin
Timo Inglin

Erstellt: 15.04.2025 15:12 - Aktualisiert : 15.04.2025 15:12

Проблема

Если вы испытываете медленные результаты поиска или загрузку контента в PaperOffice, причиной могут быть устаревшие или фрагментированные FULLTEXT-индексы в вашей базе данных MariaDB. Перестроение этих индексов может значительно улучшить производительность поиска.

Возможное решение

Это руководство объясняет, как безопасно удалить и пересоздать все FULLTEXT-индексы в вашей базе данных MariaDB PaperOffice с помощью HeidiSQL.

Отказ от ответственности: Действуйте на свой страх и риск. Всегда создавайте полную резервную копию вашей базы данных перед внесением каких-либо изменений. Вы несете ответственность за любые проблемы или потерю данных в результате этих действий.

Пошаговое руководство

  1. Установите HeidiSQL
    Загрузите и установите HeidiSQL с https://www.heidisql.com/.
  2. Определите имя вашей базы данных PaperOffice
    • Откройте HeidiSQL и подключитесь к вашему серверу MariaDB.
    • В левой панели найдите базу данных, используемую PaperOffice. Имя уникально для каждой установки (например, xxfwxukcvgahspyehjztxyfuf).
  3. Создайте резервную копию вашей базы данных
    • Щелкните правой кнопкой мыши вашу базу данных PaperOffice в HeidiSQL.
    • Выберите «Экспортировать базу данных как SQL».
    • Сохраните файл резервной копии в безопасном месте.
  4. Подготовьте скрипт для перестроения FULLTEXT-индекса
    • Откройте новую вкладку запроса в HeidiSQL.
    • Скопируйте и вставьте следующий скрипт, заменив xxfwxukcvgahspyehjztxyfuf на фактическое имя вашей базы данных:
    USE `xxfwxukcvgahspyehjztxyfuf`;
    
    -- Перестроить FULLTEXT-индексы для всех соответствующих таблиц
    
    -- Таблица: categories
    ALTER TABLE `categories`
      DROP INDEX `name`,
      ADD FULLTEXT INDEX `name` (`name`);
    
    -- Таблица: documents
    ALTER TABLE `documents`
      DROP INDEX `name`,
      DROP INDEX `xml_data`,
      DROP INDEX `type`,
      DROP INDEX `original_location`,
      DROP INDEX `keywords`,
      DROP INDEX `security_geolocation`,
      DROP INDEX `contacts`,
      DROP INDEX `description`,
      ADD FULLTEXT INDEX `name` (`name`),
      ADD FULLTEXT INDEX `xml_data` (`xml_data`),
      ADD FULLTEXT INDEX `type` (`type`),
      ADD FULLTEXT INDEX `original_location` (`original_location`),
      ADD FULLTEXT INDEX `keywords` (`keywords`),
      ADD FULLTEXT INDEX `security_geolocation` (`security_geolocation`),
      ADD FULLTEXT INDEX `contacts` (`contacts`),
      ADD FULLTEXT INDEX `description` (`description`);
    
    -- Таблица: documents_annotations
    ALTER TABLE `documents_annotations`
      DROP INDEX `text`,
      DROP INDEX `note_id`,
      DROP INDEX `task_id`,
      DROP INDEX `reminder_id`,
      DROP INDEX `contact_id`,
      DROP INDEX `tag_id`,
      DROP INDEX `events`,
      ADD FULLTEXT INDEX `text` (`text`),
      ADD FULLTEXT INDEX `note_id` (`note_id`),
      ADD FULLTEXT INDEX `task_id` (`task_id`),
      ADD FULLTEXT INDEX `reminder_id` (`reminder_id`),
      ADD FULLTEXT INDEX `contact_id` (`contact_id`),
      ADD FULLTEXT INDEX `tag_id` (`tag_id`),
      ADD FULLTEXT INDEX `events` (`events`);
    
    -- Таблица: documents_notes
    ALTER TABLE `documents_notes`
      DROP INDEX `content`,
      ADD FULLTEXT INDEX `content` (`content`);
    
    -- Таблица: documents_ocr
    ALTER TABLE `documents_ocr`
      DROP INDEX `ocr_text`,
      DROP INDEX `smartspell`,
      ADD FULLTEXT INDEX `ocr_text` (`ocr_text`),
      ADD FULLTEXT INDEX `smartspell` (`smartspell`);
    
    -- Таблица: documents_tasks
    ALTER TABLE `documents_tasks`
      DROP INDEX `this_match`,
      ADD FULLTEXT INDEX `this_match` (`content`, `todo_subject`);
    
    -- Таблица: documents_barcodes
    ALTER TABLE `documents_barcodes`
      DROP INDEX `barcode_value`,
      ADD FULLTEXT INDEX `barcode_value` (`barcode_value`);
    
    -- Таблица: documents_udfs
    ALTER TABLE `documents_udfs`
      DROP INDEX `value`,
      ADD FULLTEXT INDEX `value` (`value`);
          
    • Примечание: Выполнение этой команды может занять некоторое время, в зависимости от размера вашей базы данных.
  5. Выполните скрипт
    Нажмите кнопку «Выполнить» в HeidiSQL, чтобы запустить скрипт.
  6. Перезапустите службу MariaDB
    • После выполнения скрипта перезапустите службу MariaDB, чтобы убедиться, что все изменения полностью применены и все кэшированные данные индекса обновлены.
    • В Windows:
      • Откройте приложение «Службы» (нажмите Win+R, введите services.msc и нажмите Enter).
      • Найдите «MariaDB» в списке, щелкните правой кнопкой мыши и выберите «Перезапустить».
    • Или через командную строку:
      net stop MariaDB
      net start MariaDB
  7. Проверьте результаты
    Проверьте функции поиска и загрузки контента в PaperOffice. Производительность должна улучшиться.
  8. Если возникнут проблемы
    Восстановите базу данных из резервной копии, созданной на шаге 3.

Резюме

Перестроение FULLTEXT-индексов может решить проблему медленного поиска и загрузки контента в PaperOffice. Всегда создавайте резервную копию вашей базы данных перед внесением изменений и используйте HeidiSQL для удобства работы.

War dieser Artikel hilfreich?