Менеджер полнотекстового поиска. С его помощью осуществляется обновление индексов и получается информация об актуальности индекса.
Полное описание, параметры и ограничения
МенеджерПолнотекстовогоПоиска (FullTextSearchManager)
МенеджерПолнотекстовогоПоиска (FullTextSearchManager)
Доступен, начиная с версии 8.1.
Методы:
ДатаАктуальности (UpdateDate)
ИндексАктуален (IndexTrue)
ОбновитьИндекс (UpdateIndex)
ОбновлениеИндексаЗавершено (IndexUpdateComplete)
ОчиститьИндекс (ClearIndex)
ПолучитьВерсиюПолнотекстовогоПоиска (GetFullTextSearchVersion)
ПолучитьКоличествоЗаданийИндексирования (GetIndexingJobsCount)
ПолучитьМаксимальныйРазмерИндексируемыхДанных (GetMaxIndexedDataSize)
ПолучитьРежимРазделенияСоставныхСлов (GetCompositeWordsSeparationMode)
ПроверитьИндекс (CheckIndex)
СоздатьСписок (CreateList)
УстановитьВерсиюПолнотекстовогоПоиска (SetFullTextSearchVersion)
УстановитьКоличествоЗаданийИндексирования (SetIndexingJobsCount)
УстановитьМаксимальныйРазмерИндексируемыхДанных (SetMaxIndexedDataSize)
УстановитьРежимПолнотекстовогоПоиска (SetFullTextSearchMode)
УстановитьРежимРазделенияСоставныхСлов (SetCompositeWordsSeparationMode)
Описание:
Менеджер полнотекстового поиска. С его помощью осуществляется обновление индексов и получается информация об актуальности индекса.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
Глобальный контекст, свойство ПолнотекстовыйПоиск
Использование в версии:
Доступен, начиная с версии 8.1.
Описание изменено в версии 8.3.22.
Методическая информация
Практические примеры
Изменить и восстановить три настройки своего поискового стенда
Сначала читаем исходные параметры, затем временно задаём ограничения. Восстановление пытается вернуть каждый параметр и сообщает ошибки, не замалчивая их.
Где и как запускать
Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.
Подготовка
Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.
Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.
Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().
Сначала вручную разрешите поиск и обновите индекс своей учебной базы либо используйте отдельный урок обновления. Для опытов поиска индекс должен быть актуален, пользователь должен иметь чтение всех трёх собственных товаров.
Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.
Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.
Процедура ВыполнитьПример(Подтверждение = "") Экспорт
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
Если Пользователи.Количество() <> 1 ИЛИ Текущий = Неопределено Тогда
ВызватьИсключение "Для удаления истории нужна отдельная база с одним учебным пользователем";
КонецЕсли;
Если Текущий.Имя <> "УчебныйПользовательСинтаксиса" Тогда
ВызватьИсключение "Войдите только под собственным учебным пользователем";
КонецЕсли;
Если НЕ МонопольныйРежим() Тогда
ВызватьИсключение "Сначала вручную откройте свою учебную базу монопольно";
КонецЕсли;
Если ПолнотекстовыйПоиск.ПолучитьВерсиюПолнотекстовогоПоиска() <> ВерсияПолнотекстовогоПоиска.Версия1 Тогда
ВызватьИсключение "Этот административный опыт рассчитан только на собственный стенд Версия1";
КонецЕсли;
Если Подтверждение <> "МЕНЯЮ НАСТРОЙКИ ТОЛЬКО МОЕГО УЧЕБНОГО ПОИСКА" Тогда
Сообщить("Подтверждение отсутствует; настройки не менялись");
Возврат;
КонецЕсли;
Старые = Новый Структура;
Старые.Вставить("Задания", ПолнотекстовыйПоиск.ПолучитьКоличествоЗаданийИндексирования());
Старые.Вставить("Размер", ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных());
Старые.Вставить("СоставныеСлова", ПолнотекстовыйПоиск.ПолучитьРежимРазделенияСоставныхСлов());
Попытка
ПолнотекстовыйПоиск.УстановитьКоличествоЗаданийИндексирования(1);
ПолнотекстовыйПоиск.УстановитьМаксимальныйРазмерИндексируемыхДанных(1048576);
ПолнотекстовыйПоиск.УстановитьРежимРазделенияСоставныхСлов(РежимРазделенияСоставныхСлов.НеИспользовать);
Сообщить(ПолнотекстовыйПоиск.ПолучитьКоличествоЗаданийИндексирования() = 1);
Сообщить(ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных() = 1048576);
Сообщить(ПолнотекстовыйПоиск.ПолучитьРежимРазделенияСоставныхСлов() = РежимРазделенияСоставныхСлов.НеИспользовать);
Исключение
ОшибкаНастройки = ОписаниеОшибки();
ОшибкиВозврата = ВосстановитьСвоиНастройки(Старые);
Если ОшибкиВозврата <> "" Тогда
ВызватьИсключение ОшибкаНастройки + Символы.ПС + ОшибкиВозврата;
КонецЕсли;
ВызватьИсключение ОшибкаНастройки;
КонецПопытки;
ОшибкиВозврата = ВосстановитьСвоиНастройки(Старые);
Если ОшибкиВозврата <> "" Тогда
ВызватьИсключение "Не все исходные настройки восстановлены:" + Символы.ПС + ОшибкиВозврата;
КонецЕсли;
Сообщить(ПолнотекстовыйПоиск.ПолучитьКоличествоЗаданийИндексирования() = Старые.Задания);
Сообщить(ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных() = Старые.Размер);
Сообщить(ПолнотекстовыйПоиск.ПолучитьРежимРазделенияСоставныхСлов() = Старые.СоставныеСлова);
КонецПроцедуры
Функция ВосстановитьСвоиНастройки(СтарыеНастройки)
Ошибки = Новый Массив;
Попытка
ПолнотекстовыйПоиск.УстановитьКоличествоЗаданийИндексирования(СтарыеНастройки.Задания);
Исключение
Ошибки.Добавить("Задания: " + ОписаниеОшибки());
КонецПопытки;
Попытка
ПолнотекстовыйПоиск.УстановитьМаксимальныйРазмерИндексируемыхДанных(СтарыеНастройки.Размер);
Исключение
Ошибки.Добавить("Размер: " + ОписаниеОшибки());
КонецПопытки;
Попытка
ПолнотекстовыйПоиск.УстановитьРежимРазделенияСоставныхСлов(СтарыеНастройки.СоставныеСлова);
Исключение
Ошибки.Добавить("Составные слова: " + ОписаниеОшибки());
КонецПопытки;
Возврат СтрСоединить(Ошибки, Символы.ПС);
КонецФункцииРазбор по шагам
Ограничить опыт отдельной монопольной базой Версия1 с одним учебным администратором. Первый запуск без подтверждения.
До первого setter сохранить все три прежних значения. Установить 1 задание, 1 МиБ данных, не разделять составные слова.
Проверить прочитанные значения. На файловой базе лимит заданий сохраняется, но дополнительные фоновые задания индексирования не запускаются.
Вернуть каждый исходный параметр независимо. При ошибке одной настройки продолжить попытки возврата остальных и сообщить все ошибки.
Это опыт настроек, не нагрузочный тест и не проверка эффективности нового поиска. Индекс в этом уроке не обновляется.
Как проверить результат
При успехе шесть булевых проверок Истина: три новых параметра и три восстановленных.
Восстановление подтверждается повторным чтением. При ошибке появляется исключение с параметрами, которые вернуть не удалось.
Ожидаемый результат
Полный пример ограниченных административных настроек с явным восстановлением и честной обработкой ошибок.
На что обратить внимание
Максимальный размер задаётся в байтах, а не в количестве товаров. Слишком маленький лимит исключает крупные данные из индекса.
Значение 1 не доказывает использование отдельного фонового процесса на файловой базе.
Возврат настройки не гарантирует восстановление уже изменённого индекса; этот опыт специально не выполняет индексацию между изменениями.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Найти только три собственных учебных товара, а не всю базу
СоздатьСписок создаёт настройки; первый поиск выполняется вызовом ПерваяЧасть. Список текущей порции и общее количество — разные значения.
Где и как запускать
Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.
Подготовка
Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.
Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.
Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().
Сначала вручную разрешите поиск и обновите индекс своей учебной базы либо используйте отдельный урок обновления. Для опытов поиска индекс должен быть актуален, пользователь должен иметь чтение всех трёх собственных товаров.
Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.
Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.
Процедура ВыполнитьПример() Экспорт
Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда
ВызватьИсключение "Сначала обновите индекс своей отдельной учебной базы";
КонецЕсли;
Список = ПолнотекстовыйПоиск.СоздатьСписок("учебномаяк", 2);
Область = Новый Массив;
Область.Добавить(Метаданные.Справочники.УчебныеТовары);
Список.ОбластьПоиска = Область;
Список.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать;
Список.ОграничиватьСтрокуПоиска = Истина;
Список.ПолучатьПредставление = Истина;
Список.ПолучатьОписание = Истина;
Список.ПорогНечеткости = 0;
Сообщить(Список.СтрокаПоиска = "учебномаяк");
Сообщить(Список.РазмерПорции = 2);
Сообщить(Список.ОбластьПоиска.Количество() = 1);
Сообщить(Список.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать);
Сообщить(Список.ОграничиватьСтрокуПоиска);
Сообщить(Список.ПолучатьОписание И Список.ПолучатьПредставление);
Сообщить(Список.ПорогНечеткости = 0);
Список.ПерваяЧасть();
Сообщить(Список.НачальнаяПозиция() = 0);
Сообщить("В текущей порции: " + Строка(Список.Количество()));
Сообщить("Всего найдено: " + Строка(Список.ПолноеКоличество()));
Сообщить("Результаты усечены: " + Строка(Список.СлишкомМногоРезультатов()));
Для Индекс = 0 По Список.Количество() - 1 Цикл
РезультатПоиска = Список.Получить(Индекс);
Сообщить(РезультатПоиска.Метаданные = Метаданные.Справочники.УчебныеТовары);
Сообщить(ТипЗнч(РезультатПоиска.Значение) = Тип("СправочникСсылка.УчебныеТовары"));
Сообщить("Представление: " + РезультатПоиска.Представление);
Сообщить("Контекст: " + РезультатПоиска.Описание);
КонецЦикла;
КонецПроцедурыРазбор по шагам
Убедиться в актуальности уже подготовленного индекса. Создать поиск по маркеру с размером порции 2.
ОбластьПоиска содержит метаданные только собственного справочника. Поиск метаданных выключен, чтобы не получать конфигурационные команды вместо товаров.
Настройки описания и представления включить до ПерваяЧасть. Явно ограничить длину запроса, оставить нечёткость 0.
После ПерваяЧасть получить количество текущей порции, общее число и признак усечения. Обойти только допустимые индексы порции.
Для каждого результата прочитать объектную ссылку, метаданные, представление и контекст. Ничего не открывать и не записывать.
Как проверить результат
Булевы проверки настроек и типов Истина. При ровно трёх доступных проиндексированных товарах первая порция 2, всего 3, усечение Ложь.
Порядок Книги/Ручки/Коробки не фиксируется: индекс полнотекстового поиска не является сортировкой по наименованию.
Ожидаемый результат
Получена ограниченная реальная поисковая выдача с объяснением четырёх свойств её элементов.
На что обратить внимание
В ОбластьПоиска нельзя подставлять метаданные отдельного реквизита или табличной части; нужны основные объекты.
Результаты учитывают доступ пользователя. Пустой список может означать права, неактуальность или отсутствие индекса, а не обязательно отсутствие товара.
Элементы выдачи только для чтения. Изменить Представление не означает переименовать товар.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.