1. Общие механизмы, понятия и термины
#55

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Нужно расширить полнотекстовый поиск 1С своим словарём (синонимы и профессиональные термины). Какими объектами конфигурации можно подключить такой дополнительный словарь?

Только через константу (строка или ХранилищеЗначения).
Неправильно: Константа действительно может хранить данные дополнительного словаря (в т.ч. строкового типа или типа ХранилищеЗначения), но это не единственный поддерживаемый способ. Платформа также позволяет подключать словари как общие макеты (текстовые или из двоичных данных).
Только через общий макет (текстовый макет или макет из двоичных данных).
Неправильно: Общий макет подходит для хранения словаря (например, как текстовый XML или как двоичные данные), но платформа поддерживает ещё и вариант хранения словаря в константе. Поэтому утверждение «только через макет» неверно.
Через параметр сеанса (Session parameter).
Неправильно: Дополнительные словари для полнотекстового поиска задаются в свойстве корневого объекта метаданных и выбираются из общих макетов или констант. Параметры сеанса предназначены для хранения значений на время работы пользователя/сеанса и не используются как источник дополнительных словарей в настройке механизма полнотекстового поиска.
Через константу или общий макет (оба варианта поддерживаются).
Правильно: В качестве дополнительных словарей полнотекстового поиска можно использовать либо общие макеты (текстовые и из двоичных данных), либо константы (строкового типа и типа ХранилищеЗначения). Подключение выполняется в свойстве «Дополнительные словари» (или аналогичном свойстве дополнительных словарей полнотекстового поиска) у корневого объекта метаданных конфигурации.
Можно использовать константу, общий макет и параметр сеанса - все перечисленное подходит.
Неправильно: Константы и общие макеты действительно подходят, но параметр сеанса не входит в перечень поддерживаемых носителей дополнительных словарей. Поэтому вариант с включением параметра сеанса расширяет список неверно.

Пояснение

Дополнительный словарь для полнотекстового поиска - это способ научить поиск понимать отраслевые термины, формы слов и синонимы (например: «счет-фактура» ↔ «СФ», «ошибка» ↔ «bug/crash», специфичные аббревиатуры, названия изделий и т.п.). В 1С такие словари подключаются на уровне конфигурации через свойство корневого объекта метаданных (объект «Конфигурация» в конфигураторе) - там выбираются объекты, из которых платформа будет загружать словари. Какие объекты подходят: - Общий макет: • текстовый макет (удобно, если словарь хранится как текст), • макет из двоичных данных (удобно, если словарь хранится как файл/ресурс). - Константа: • строкового типа (если словарь хранится как текст), • типа ХранилищеЗначения (если нужно хранить объёмные данные/файл). Формат словаря обычно задаётся как XML-структура «Dictionary», где можно описать: - Words: базовую форму слова (lemma) и его формы (forms), чтобы поиск находил разные склонения/варианты; - Synonyms: наборы синонимов в одной строке (например: «error bug crash»); - Roots: список значимых частей слова (полезно для некоторых языков/составных слов). Важно: чтобы синонимы участвовали в поиске, в запросе часто используют специальный признак (например, поиск «!error» должен находить и «bug», и «crash», если они в одном наборе). Практический пример: 1) Создайте общий макет «СловарьПоиска_ИТ» (текстовый) и внесите туда XML, где в Synonyms будет строка «ошибка баг краш», а в Words - «рунет» с формами «рунета рунете…». 2) В конфигураторе откройте свойства объекта «Конфигурация» и в поле «Дополнительные словари» добавьте этот макет (или вместо макета укажите константу, если словарь храните в ней). 3) После изменения словаря обычно требуется перезапуск соответствующего компонента (клиент/сервер/веб-публикация - в зависимости от режима работы), чтобы словарь был заново подхвачен. 4) Учтите, что индекс полнотекстового поиска может не перестроиться автоматически только из-за смены словаря: на практике часто делают ручное обновление/перестроение полнотекстового индекса, чтобы результаты поиска стали предсказуемыми. Лучшие практики: - Храните отраслевые термины и синонимы в отдельном макете/константе, с понятным именованием и версионированием. - Не добавляйте слишком «широкие» синонимы (например, один термин ко всем словам) - это ухудшит релевантность и увеличит шум в выдаче. - Сначала проверьте словарь на тестовой базе: при ошибках формата загрузка словаря может остановиться на проблемном месте, и часть записей не будет учтена.