При обновлении платформы 1С:Предприятие до версии 8.3.24 и выше многие администраторы и разработчики сталкиваются с некорректной работой полнотекстового поиска (ППС). Это связано с тем, что в новых версиях платформы активно внедряется и оптимизируется вторая версия движка поиска (версия 2.0), которая существенно отличается от классической версии 1.0 по алгоритмам ранжирования, морфологии и структуре хранения данных. В этой статье мы подробно разберем, как управлять этими режимами, как правильно выполнять переход и что делать, если стандартные настройки недоступны.
Рассмотрим ситуацию: вы обновили платформу, например, с версии 8.3.22 на 8.3.24. После этого пользователи начинают жаловаться на «странное» поведение поиска: результаты могут не выводиться вовсе, либо их релевантность кажется крайне низкой. Проанализируем причину. Платформа 8.3.24 ожидает обновленной структуры индекса. Согласно официальной документации (файл V8Update.htm), для улучшения релевантности и стабильности необходимо полностью очистить старый индекс и перестроить его заново. Если же вы хотите вернуться к старому механизму или, наоборот, принудительно включить новый, нам потребуется доступ к управлению версиями полнотекстового поиска.
Это самый простой и доступный способ для администратора системы. Разберем по шагам, как добраться до нужных настроек:
Выясним причину, по которой поле «Версия» может быть серым (заблокированным). Платформа накладывает ряд ограничений на изменение этого параметра:
Во-первых, для смены версии полнотекстового поиска практически всегда требуется монопольный режим работы с базой данных. Убедимся, что в системе нет активных сеансов пользователей и фоновых заданий — для этого подойдёт инструмент принудительного завершения сеансов пользователей.
Во-вторых, необходимо временно остановить работу самого механизма поиска. Алгоритм действий следующий: сначала снимем галочку «Разрешить полнотекстовый поиск», нажмем кнопку «Записать» или «ОК», и только после этого поле выбора версии станет доступным для редактирования. После смены версии не забудьте вернуть галочку использования поиска на место.
В-третьих, проверим режим совместимости конфигурации. Использование версии 2.0 полнотекстового поиска возможно только в том случае, если режим совместимости установлен на значение 8.3.23 или выше. Если ваша база работает в режиме совместимости 8.3.20 или ниже, выбор второй версии будет заблокирован на уровне ядра платформы.
Иногда возникают ситуации, когда интерфейсные методы недоступны из-за особенностей доработки конфигурации. В этом случае мы можем прибегнуть к использованию встроенного языка 1С. Для этого создадим внешнюю обработку или воспользуемся консолью кода. Рассмотрим пример кода для принудительной установки версии 2.0:
// Установка версии полнотекстового поиска программно
ПолнотекстовыйПоиск.УстановитьВерсиюПолнотекстовогоПоиска(ВерсияПолнотекстовогоПоиска.Версия2);
Сообщить("Версия полнотекстового поиска успешно изменена на 2.0");
Аналогично, если нам нужно вернуть версию 1.0, используем следующий фрагмент:
// Возврат к классической версии 1.0
ПолнотекстовыйПоиск.УстановитьВерсиюПолнотекстовогоПоиска(ВерсияПолнотекстовогоПоиска.Версия1);
Сообщить("Выполнен возврат к версии полнотекстового поиска 1.0");
Важно помнить, что после выполнения этого кода необходимо инициировать полное обновление индекса, так как структуры данных версии 1.0 и 2.0 несовместимы между собой — в этом поможет обработка для массового перепроведения документов.
Проанализируем ситуацию, когда после смены версии поиск продолжает «чудить», находя движения непроведенных документов — для этого есть обработка очистки базы от битых движений. Обычного нажатия кнопки «Обновить индекс» может быть недостаточно. При переходе с 8.3.22 на 8.3.24 крайне рекомендуется выполнить полную очистку. Разберем правильную последовательность действий:
В особо сложных случаях, когда программная очистка не помогает (например, из-за повреждения файлов индекса на диске), следует выполнить удаление вручную — для этого подойдёт диагностика поврежденных записей и удаление битых ссылок. Посмотрим, где хранятся эти данные. В клиент-серверном варианте файлы индекса располагаются на сервере 1С:Предприятие в каталоге рабочего процесса (не путать с клиентским кэшем 1С). Обычно это папка вида snccntx... внутри каталога reg_1541. Внутри нее нас интересует папка 1Cv8FTxt. Для очистки необходимо:
1. Остановить службу сервера 1С:Предприятие (1C:Enterprise 8.3 Server Agent).
2. Полностью удалить содержимое папки 1Cv8FTxt.
3. Запустить службу сервера.
4. Зайти в базу и запустить процесс обновления индекса через стандартную обработку — пригодится обработка удаления битых ссылок в объектах и регистрах.
Выясним, стоит ли вообще переходить на версию 2.0. Основные преимущества новой версии включают:
Таким образом, переход на 8.3.24 — это отличный повод перевести систему на современный движок поиска 2.0, предварительно убедившись, что режим совместимости конфигурации позволяет это сделать, а все старые индексные файлы корректно удалены.