Архитектура плагинаСтруктура Базы данных

Структура таблиц базы данных

WP Fast Total Search (WPFTS) использует несколько таблиц в базе данных WordPress для хранения поискового индекса и другой информации, необходимой для работы плагина. Префикс таблиц по умолчанию — wpftsi_, но он может быть изменен в зависимости от настроек WordPress Multisite. Если в вашей сети WordPress Multisite есть блог с ID, отличным от 1, префикс таблиц будет выглядеть как wpftsi_{blog_id}_. Получить префикс таблиц можно с помощью метода WPFTS_Core::dbprefix().

Вот описание каждой таблицы:

  • wpftsi_docs: Хранит информацию о документах (постах, страницах и т.д.), которые были проиндексированы.

    • id (int): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • index_id (int): ID записи в таблице wpftsi_index. Внешний ключ.

    • token (varchar(255)): Название кластера (например, post_title, post_content).

    • n (int unsigned): Количество слов в кластере для данного документа.

  • wpftsi_index: Хранит основную информацию о проиндексированных записях.

    • id (int unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • tid (bigint unsigned): ID поста или другого объекта в WordPress.

    • tsrc (varchar(255)): Источник данных (например, wp_posts).

    • tdt (datetime): Дата и время последнего изменения поста.

    • build_time (int): Временная метка индексации поста. 0 - не проиндексировано. 9999 - в процессе. >10000 - проиндексировано.

    • update_dt (datetime): Дата и время последнего обновления записи в индексе.

    • force_rebuild (tinyint): Флаг, указывающий на необходимость переиндексации (0 - нет, 1 - да, 2 - высокий приоритет).

    • locked_dt (datetime): Дата и время блокировки записи (для предотвращения одновременной индексации).

    • rules_idset (varchar(255)): Набор ID правил индексации, примененных к данному посту.

  • wpftsi_stops: Хранит список стоп-слов, которые игнорируются при индексации.

    • id (int unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • word (varchar(255)): Стоп-слово.

  • wpftsi_vectors: Хранит информацию о встречаемости слов в документах.

    • wid (int): ID слова в таблице wpftsi_words. Часть составного первичного ключа.

    • did (int): ID документа в таблице wpftsi_docs. Часть составного первичного ключа.

    • wn (int): Позиция слова в документе.

  • wpftsi_words: Хранит словарь всех слов, найденных в проиндексированных документах.

    • id (int): Уникальный идентификатор слова. Первичный ключ, автоинкремент.

    • word (varchar(255)): Само слово.

    • act (int): Число документов, в которых встречается это слово. -1 - данные устарели и необходимо обновить кеш.

  • wpftsi_tw: Временная таблица для хранения слов и их позиций перед добавлением в wpftsi_vectors.

    • id (int): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • w (varchar(255)): Слово.

    • did (int): ID документа.

    • wn (int): Позиция слова в документе.

  • wpftsi_vc: (Vector Cache) Хранит кешированные векторы слов для оптимизации поиска.

    • id (int): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • wid (int): ID слова.

    • upd_dt (datetime): Дата и время последнего обновления кеша.

    • vc (longblob): Бинарные данные вектора.

  • wpftsi_tp: (Temporary/permanent Relevance) Хранит промежуточные результаты расчета релевантности.

    • id (bigint unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • q_id (int): ID поискового запроса в таблице wpftsi_qlog.

    • did (int): ID документа.

    • pow (int): “Сила” документа.

    • res (float): Релевантность документа.

    • ts (timestamp): Время создания записи.

  • wpftsi_qlog: Хранит лог поисковых запросов.

    • id (int): Уникальный идентификатор запроса. Первичный ключ, автоинкремент.

    • query (longtext): Поисковый запрос.

    • query_type (varchar(255)): Тип запроса (например, wpmainsearch_admin, wpmainsearch_frontend).

    • preset (varchar(255)): Использованный пресет.

    • widget_name (varchar(255)): Имя виджета (если запрос был выполнен через виджет).

    • n_results (int): Количество найденных результатов.

    • q_time (float): Время выполнения запроса.

    • max_ram (bigint): Максимальное количество использованной памяти.

    • user_id (bigint): ID пользователя, выполнившего запрос.

    • req_ip (varchar(40)): IP-адрес пользователя.

    • ref_url (text): URL страницы, с которой был выполнен запрос.

    • insert_dt (datetime): Дата и время запроса.

    • wpq_params (longtext): JSON-encoded параметры запроса WP_Query.

    • ext (longtext): Дополнительные данные (лог).

  • wpftsi_map: Хранит соответствие между постами и другими объектами (например, файлами). Используется для индексации данных, связанных с постами, но хранящихся в других таблицах.

    • id (bigint unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • post_id (bigint unsigned): ID поста в WordPress.

    • obj_id (bigint unsigned): ID внешнего объекта.

    • obj_type (varchar(50)): Тип внешнего объекта.

  • wpftsi_queue: Очередь задач для индексатора. Не используется в текущей версии плагина.

    • id (bigint unsigned): Уникальный идентификатор задачи. Первичный ключ, автоинкремент.

    • post_id (bigint unsigned): ID поста.

    • remark (varchar(255)): Дополнительная информация о задаче.

    • insert_dt (datetime): Дата и время добавления задачи в очередь.

  • wpftsi_rawcache: Кеш необработанных данных, извлеченных из постов и других источников. Используется для ускорения индексации.

    • id (int unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • object_id (bigint): ID объекта в WordPress.

    • object_type (varchar(150)): Тип объекта (например, wp_post).

    • cached_dt (datetime): Дата и время последнего изменения объекта.

    • insert_dt (datetime): Дата и время добавления данных в кеш.

    • method_id (varchar(150)): Идентификатор метода, которым были получены данные.

    • data (longtext): Сериализованные данные.

    • error (text): Информация об ошибке (если возникла).

    • filename (text): Имя файла (для вложений).

  • wpftsi_ilog: (Indexer Log) Хранит лог работы индексатора.

    • id (int unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • index_id (int unsigned): ID записи в таблице wpftsi_index.

    • start_ts (double): Временная метка начала индексации.

    • getpost_ts (double): Время, затраченное на получение данных поста.

    • clusters_ts (double): Время, затраченное на обработку кластеров.

    • cluster_stats (longtext): Статистика по кластерам (размер данных).

    • reindex_ts (double): Общее время индексации.

    • status (int): Статус индексации.

    • error (longtext): Информация об ошибке.

  • wpftsi_irules: Хранит правила индексации.

    • id (int unsigned): Уникальный идентификатор правила. Первичный ключ, автоинкремент.

    • ident (varchar(130)): Уникальный идентификатор правила (slug).

    • filter_hash (varchar(50)): Хэш условия фильтра.

    • act_hash (varchar(50)): Хэш действий правила.

    • rule_snap (longtext): JSON-encoded данные правила.

    • clone_id (int): ID родительского правила (для клонированных правил).

    • filter_sql (longtext): SQL-код условия фильтра.

    • is_valid (int): Флаг, указывающий, является ли правило корректным.

    • error_msg (longtext): Сообщение об ошибке (если есть).

    • ord (int): Порядок выполнения правила.

    • type (int): Тип правила (0 - базовое, 1 - пользовательское, 2 - финальное, 3 - временное).

    • insert_dt (datetime): Дата и время создания правила.

  • wpftsi_doctree: Хранит информацию о вложенных данных. Используется для индексации содержимого, которое связано с постом опосредованно, например, через другой пост или объект.

    • id (int unsigned): Уникальный идентификатор записи. Первичный ключ, автоинкремент.

    • p_tid (bigint unsigned): ID родительского объекта.

    • p_tsrc (varchar(255)): Источник родительского объекта.

    • p_token (varchar(255)): Кластер родительского объекта.

    • c_tid (bigint unsigned): ID дочернего объекта.

    • c_tsrc (varchar(255)): Источник дочернего объекта.

    • c_token (varchar(255)): Кластер дочернего объекта.

Более подробная информация о каждой таблице и ее полях представлена в документации по API плагина. Разработчикам аддонов важно понимать структуру таблиц WPFTS для корректной интеграции с плагином.