Полнотекстовый поиск в 1С. №2 Самое основное для разработчика
Полнотекстовый поиск в 1С и все что с этим связано. Часть №2: программное использование и некоторые нюансы при разработке.
- Описание
- Подробнее
Описание
Продолжаем
Продолжаем развивать тему штатного полнотекстового поиска платформы 1С. До этого был представлен инструмент для обслуживания полнотекстового индекса "Мастер полнотекстового поиска" c расширенными возможностями и подробно рассмотрены нюансы работы поиска в динамических списках в публикации "Полнотекстовый поиск в 1С. №1 Грабли в динамических списках".
Но есть и другая сторона — это программная работа с индексом полнотекстового поиска и настройка объектов для включения в его состав.
Сегодня мы как раз и рассмотрим вопросы и проблемы, связанные с разработкой и использованием полнотекстового индекса, а также некоторые нюансы его работы. Начнем с настроек метаданных объектов конфигурации.
Индексировать все
На самом деле арсенал разработчика в части настройки полнотекстового индекса платформы не так велик. Все что мы можем сделать, чтобы повлиять на состав индексируемых данных — это включить индексирование для объекта метаданных и отдельно настроить индексирование для каждого поля (в том числе и для некоторых стандартных реквизитов, о чем иногда забывают разработчики. Еще можно индексировать поля в табличных частях). Например, вот так включено индексирование для справочника "Физические лица".
Эта настройка позволяет включить / исключить объект из полнотекстового индекса. При создании объектов по умолчанию поиск включен для всех объектных типов, а для регистров выключен. Настройка доступна почти для всех объектов метаданных.
Также доступно свойство "Полнотекстовый поиск" для отдельных полей (реквизитов, ресурсов, измерений) вне зависимости (почти) от их типа (кроме ссылок на внешние источники данных разве что). Да, полнотекстовый индекс можно использовать даже для регистров, но используется это редко. Какой смысл искать данные через индекс ППД в регистре накопления? Наверное, для регистров сведений еще это как-то можно применить, и то в особых случаях. Например в 1С:Документооборот что-то подобное применялось.
Конфигурация может содержать несколько сотен объектов метаданных и еще больше полей. Посмотреть индексирование может быть не простой задачей — придется все "прокликивать". Можно написать скрипт самому для проверки индексирования или использовать инструмент "Мастер полнотекстового поиска" для просмотра настроек полнотекстового индексирования объектов.
Кроме этого, есть еще настройки поиска данных при вводе по строке. В разделе настроек "Поле ввода" объектных типов можно найти настройку "Полнотекстовый поиск" для ввода по строке. Эта настройка имеет описание на ИТС.
Позволяет выполнять поиск не средствами СУБД, как это делается обычно, а с помощью индекса ППД. Также управлять использованием ППД при вводе можно в событии "ОбработкаПолученияДанныхВыбора" модуля менеджера объекта.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Отключаем стандартную обработку и включаем полнотекстовый поиск
СтандартнаяОбработка = Ложь;
Параметры.ПолнотекстовыйПоиск = ПолнотекстовыйПоискПриВводеПоСтроке.Использовать;
КонецПроцедуры
Для событий ввода по строке в технологический журнал даже были добавлены события "INPUTBYSTRING" для анализа его работы. Подробнее есть информация здесь.
Пожалуй, это практически все настройки полнотекстового поиска, которые может использовать разработчик для определения состава данных, которые платформа 1С добавила в индекс ППД, а также некоторых действий при поиске.
Первая проблема и обслуживание
Основные настройки мы рассмотрели, но появилась и первая проблема. Если в конфигурации множество объектов, а на стороне базы в этих объектах большое количество записей, то сразу возникает вопрос: а что, если полнотекстовый поиск мне нужно использовать только для одного справочника?
На небольших и средних базах такой вопрос может вообще не возникнуть, но если база "весит" сотни гигабайт или терабайты, то просто так взять и проиндексировать ее штатными средствами платформы 1С практически невозможно. Или же это займет несколько дней, неделю (делайте ставки). Для любознательных: краткое описание процесса поддержки полнотекстового индекса.