1.19 Полнотекстовый поиск в 1С и особенности его использования при нечетком поиске
❓ 1.19 Полнотекстовый поиск в 1С и особенности его использования?
📚 Документация
Заголовок раздела «📚 Документация»- ИТС: Платформа — Механизм полнотекстового поиска в данных
https://its.1c.ru/db/v8327doc#bookmark:dev:TI000000800
🧠 Краткая теория
Заголовок раздела «🧠 Краткая теория»Основы полнотекстового поиска мы уже рассматривали ранее см. Поиск по синонимам. В этом вопросе важно обратить внимание на особенности работы механизма и различия между версиями полнотекстового поиска.
В платформе 1С:Предприятие 8.3 существует две версии полнотекстового поиска:
- версия 1;
- версия 2 с версии 8.3.22.
Обе версии позволяют выполнять полнотекстовый поиск по данным информационной базы, но отличаются устройством индекса, производительностью и требованиями к окружению.
Полнотекстовый поиск версии 1
Заголовок раздела «Полнотекстовый поиск версии 1»В первой версии полнотекстового поиска используется два индекса:
- основной индекс;
- дополнительный индекс.
Основной индекс используется для быстрого поиска по уже обработанным данным.
Дополнительный индекс используется для данных, которые были изменены после последнего обновления основного индекса.
Особенность в том, что поиск по основному индексу выполняется быстро, а поиск по дополнительному индексу — медленнее.
Слияние индексов в версии 1
Заголовок раздела «Слияние индексов в версии 1»Чтобы повысить производительность поиска, для версии 1 используется слияние индексов.
Слияние индексов:
- объединяет изменения из дополнительного индекса с основным индексом;
- может быть длительной операцией;
- создает дополнительную нагрузку на систему.
Поэтому такую операцию обычно рекомендуется выполнять:
- ночью;
- в выходные;
- в периоды минимальной нагрузки.
Обновление индекса в версии 1
Заголовок раздела «Обновление индекса в версии 1»Обновление индекса полнотекстового поиска версии 1 выполняется фоновым заданием.
При этом важно, что такое фоновое задание должно быть реализовано в прикладном решении.
То есть платформа предоставляет механизм полнотекстового поиска, но управление обновлением индекса в версии 1 требует участия разработчика.
Особенность поиска по буквам «е» и «ё» в версии 1
Заголовок раздела «Особенность поиска по буквам «е» и «ё» в версии 1»В версии 1 буквы «е» и «ё» считаются одинаковыми.
Например, слова:
еж;ёж.
Для полнотекстового поиска версии 1 будут считаться эквивалентными.
Полнотекстовый поиск версии 2
Заголовок раздела «Полнотекстовый поиск версии 2»Полнотекстовый поиск версии 2 появился позже и является более современным вариантом механизма.
В версии 2 используется один единый индекс.
При изменении данных индекс обновляется автоматически, без необходимости реализовывать отдельное фоновое задание в прикладном решении.
Преимущества версии 2
Заголовок раздела «Преимущества версии 2»Версия 2 имеет несколько важных преимуществ:
- используется один индекс;
- нет разделения на основной и дополнительный индекс;
- индекс обновляется автоматически;
- поиск работает быстрее;
- ресурсы используются эффективнее.
Именно поэтому для решений версия 2 обычно является предпочтительной.
Особенность поиска по буквам «е» и «ё» в версии 2
Заголовок раздела «Особенность поиска по буквам «е» и «ё» в версии 2»В версии 2 буквы «е» и «ё» считаются разными.
Это важное отличие от версии 1.
Например, если нужно найти слово с буквой ё, в поисковой строке нужно использовать именно ё либо применять подходящее поисковое выражение.
Ограничения версии 2
Заголовок раздела «Ограничения версии 2»Полнотекстовый поиск версии 2 не поддерживается в файловом варианте информационной базы.
Исключение — файловая информационная база, работающая через автономный сервер.
То есть версия 2 поддерживается:
- в клиент-серверном варианте;
- в файловом варианте при использовании автономного сервера.
Где выполняется полнотекстовый поиск
Заголовок раздела «Где выполняется полнотекстовый поиск»Полнотекстовый поиск инициируется на стороне клиента.
Но программный интерфейс полнотекстового поиска доступен на сервере.
Фактическое выполнение зависит от варианта работы информационной базы:
- в файловом варианте — на компьютере пользователя;
- в клиент-серверном варианте — в кластере серверов 1С.
Программный интерфейс полнотекстового поиска
Заголовок раздела «Программный интерфейс полнотекстового поиска»Полнотекстовый поиск в данных выполняется средствами встроенного языка.
Исключение — глобальный поиск, который используется платформой как отдельный механизм.
Для создания списка полнотекстового поиска используется метод:
ПолнотекстовыйПоиск.СоздатьСписок()Метод принимает параметры:
- СтрокаПоиска — поисковое выражение;
- РазмерПорции — количество объектов, возвращаемых за одну итерацию поиска.
Пример использования
Заголовок раздела «Пример использования»Типовой сценарий — поиск номенклатуры через расширенный поиск.
// Создать список поискаСписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(ПараметрыПоиска.СтрокаПоиска);
СписокПоиска.ПолучатьОписание = Ложь;
СписокПоиска.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать;
ОбластиПоиска = Новый Массив;
// Добавляем метаданные, в которых будет выполняться поискДля Каждого СтрМас Из ПараметрыПоиска.ОбластиПоиска Цикл ОбластиПоиска.Добавить(СтрМас.ОбъектМетаданных);КонецЦикла;
СписокПоиска.ОбластьПоиска = ОбластиПоиска;
// Запуск поискаСписокПоиска.ПерваяЧасть();
// далее — обработка результатаПолнотекстовый поиск выполняется порциями. Это позволяет обрабатывать большие объемы данных без необходимости получать весь результат сразу.
Где хранятся индексы
Заголовок раздела «Где хранятся индексы»В клиент-серверном варианте файлы индекса размещаются в каталоге данных кластера серверов 1С.
Для разных версий используются разные каталоги:
- версия 1 —
1Cv8FTxt; - версия 2 —
1Cv8FTxt2.
Архитектурные рекомендации
Заголовок раздела «Архитектурные рекомендации»Полнотекстовый поиск может потреблять значительные ресурсы.
Поэтому в кластере с несколькими рабочими серверами рекомендуется отдельно продумывать, где будет выполняться полнотекстовый поиск.
Для этого используют требование назначения функциональности кластера 1С.
Важно помнить: даже если пользователи активно не используют полнотекстовый поиск, сам механизм может создавать нагрузку на систему.
Поэтому полнотекстовый поиск не стоит включать «на всякий случай».
Ключевые выводы
Заголовок раздела «Ключевые выводы»Версия 2 — более современный и предпочтительный вариант полнотекстового поиска.
Версия 1 требует большего контроля:
- нужно управлять обновлением индекса;
- нужно учитывать дополнительный индекс;
- нужно контролировать нагрузку.
Версия 2 проще в сопровождении, но имеет ограничение: она не работает в файловом варианте информационной базы.
🎯 Главное
Заголовок раздела «🎯 Главное»Полнотекстовый поиск в 1С — мощный, но достаточно тяжелый механизм.
Его стоит использовать тогда, когда есть реальный сценарий поиска по данным, а не просто включать по умолчанию.
При проектировании важно учитывать версию полнотекстового поиска, вариант работы информационной базы и нагрузку на сервера.