СписокПолнотекстовогоПоиска.СлишкомМногоРезультатов

Методы · TooManyResults

Осуществляет проверку числа результатов поиска.

Синтаксис

СлишкомМногоРезультатов()
Полное описание, параметры и ограничения

СписокПолнотекстовогоПоиска.СлишкомМногоРезультатов (FullTextSearchList.TooManyResults)

СписокПолнотекстовогоПоиска (FullTextSearchList)

СлишкомМногоРезультатов (TooManyResults)

Доступен, начиная с версии 8.1.

Синтаксис:
СлишкомМногоРезультатов()
Возвращаемое значение:
Тип: Булево.
Истина - во время поиска по соображениям производительности было произведено усечение количества результатов, что может сказаться на точности поиска (не все объекты будут найдены).
Описание:

Осуществляет проверку числа результатов поиска.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Найти только три собственных учебных товара, а не всю базу

СоздатьСписок создаёт настройки; первый поиск выполняется вызовом ПерваяЧасть. Список текущей порции и общее количество — разные значения.

Где и как запускать

Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.

Подготовка

  1. Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.

  2. Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.

  3. Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().

  4. Сначала вручную разрешите поиск и обновите индекс своей учебной базы либо используйте отдельный урок обновления. Для опытов поиска индекс должен быть актуален, пользователь должен иметь чтение всех трёх собственных товаров.

  5. Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.

  6. Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.

Процедура ВыполнитьПример() Экспорт
    Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда
        ВызватьИсключение "Сначала обновите индекс своей отдельной учебной базы";
    КонецЕсли;
    Список = ПолнотекстовыйПоиск.СоздатьСписок("учебномаяк", 2);
    Область = Новый Массив;
    Область.Добавить(Метаданные.Справочники.УчебныеТовары);
    Список.ОбластьПоиска = Область;
    Список.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать;
    Список.ОграничиватьСтрокуПоиска = Истина;
    Список.ПолучатьПредставление = Истина;
    Список.ПолучатьОписание = Истина;
    Список.ПорогНечеткости = 0;
    Сообщить(Список.СтрокаПоиска = "учебномаяк");
    Сообщить(Список.РазмерПорции = 2);
    Сообщить(Список.ОбластьПоиска.Количество() = 1);
    Сообщить(Список.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать);
    Сообщить(Список.ОграничиватьСтрокуПоиска);
    Сообщить(Список.ПолучатьОписание И Список.ПолучатьПредставление);
    Сообщить(Список.ПорогНечеткости = 0);
    Список.ПерваяЧасть();
    Сообщить(Список.НачальнаяПозиция() = 0);
    Сообщить("В текущей порции: " + Строка(Список.Количество()));
    Сообщить("Всего найдено: " + Строка(Список.ПолноеКоличество()));
    Сообщить("Результаты усечены: " + Строка(Список.СлишкомМногоРезультатов()));
    Для Индекс = 0 По Список.Количество() - 1 Цикл
        РезультатПоиска = Список.Получить(Индекс);
        Сообщить(РезультатПоиска.Метаданные = Метаданные.Справочники.УчебныеТовары);
        Сообщить(ТипЗнч(РезультатПоиска.Значение) = Тип("СправочникСсылка.УчебныеТовары"));
        Сообщить("Представление: " + РезультатПоиска.Представление);
        Сообщить("Контекст: " + РезультатПоиска.Описание);
    КонецЦикла;
КонецПроцедуры

Разбор по шагам

  1. Убедиться в актуальности уже подготовленного индекса. Создать поиск по маркеру с размером порции 2.

  2. ОбластьПоиска содержит метаданные только собственного справочника. Поиск метаданных выключен, чтобы не получать конфигурационные команды вместо товаров.

  3. Настройки описания и представления включить до ПерваяЧасть. Явно ограничить длину запроса, оставить нечёткость 0.

  4. После ПерваяЧасть получить количество текущей порции, общее число и признак усечения. Обойти только допустимые индексы порции.

  5. Для каждого результата прочитать объектную ссылку, метаданные, представление и контекст. Ничего не открывать и не записывать.

Как проверить результат

  1. Булевы проверки настроек и типов Истина. При ровно трёх доступных проиндексированных товарах первая порция 2, всего 3, усечение Ложь.

  2. Порядок Книги/Ручки/Коробки не фиксируется: индекс полнотекстового поиска не является сортировкой по наименованию.

Ожидаемый результат

Получена ограниченная реальная поисковая выдача с объяснением четырёх свойств её элементов.

На что обратить внимание

  1. В ОбластьПоиска нельзя подставлять метаданные отдельного реквизита или табличной части; нужны основные объекты.

  2. Результаты учитывают доступ пользователя. Пустой список может означать права, неактуальность или отсутствие индекса, а не обязательно отсутствие товара.

  3. Элементы выдачи только для чтения. Изменить Представление не означает переименовать товар.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

И, ИЛИ и НЕ в поиске учебных товаров

Поисковое выражение — не текст Запроса 1С и не SQL. Меняем только выражение собственного списка, после каждого изменения заново вызываем ПерваяЧасть.

Где и как запускать

Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.

Подготовка

  1. Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.

  2. Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.

  3. Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().

  4. Сначала вручную разрешите поиск и обновите индекс своей учебной базы либо используйте отдельный урок обновления. Для опытов поиска индекс должен быть актуален, пользователь должен иметь чтение всех трёх собственных товаров.

  5. Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.

  6. Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.

Процедура ВыполнитьПример() Экспорт
    Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда
        ВызватьИсключение "Сначала обновите индекс своей отдельной учебной базы";
    КонецЕсли;
    Список = ПолнотекстовыйПоиск.СоздатьСписок("учебномаяк", 2);
    Область = Новый Массив;
    Область.Добавить(Метаданные.Справочники.УчебныеТовары);
    Список.ОбластьПоиска = Область;
    Список.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать;
    Список.ОграничиватьСтрокуПоиска = Истина;
    Список.ПолучатьПредставление = Истина;
    Список.ПолучатьОписание = Истина;
    Список.ПорогНечеткости = 0;
    Список.РазмерПорции = 10;
    Выражения = Новый Массив;
    Выражения.Добавить("учебномаяк И (книга ИЛИ ручка)");
    Выражения.Добавить("учебномаяк НЕ коробка");
    Для Каждого Выражение Из Выражения Цикл
        Если СтрДлина(Выражение) > 1000 Тогда
            ВызватьИсключение "Учебное выражение слишком длинное";
        КонецЕсли;
        Список.СтрокаПоиска = Выражение;
        Список.ПерваяЧасть();
        Сообщить(Список.ПолноеКоличество() = 2);
        Сообщить(Список.Количество() = 2);
        Сообщить(НЕ Список.СлишкомМногоРезультатов());
        Сообщить("Выражение: " + Выражение);
        Для Индекс = 0 По Список.Количество() - 1 Цикл
            Сообщить(Список.Получить(Индекс).Представление);
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Разбор по шагам

  1. Использовать два фиксированных учебных выражения: Книга или Ручка с маркером; затем маркер без Коробки.

  2. Операторы писать в верхнем регистре, скобки задают группировку. НЕ здесь связывает два условия, не стоит в начале.

  3. Установить размер порции 10, чтобы два результата помещались вместе. После изменения СтрокаПоиска снова выполнить ПерваяЧасть.

  4. Показать фактические представления. Не использовать поисковую строку в Выполнить, SQL или динамическом программном коде.

Как проверить результат

  1. Для обоих выражений ожидаются Книга и Ручка, три проверки каждого выражения Истина.

  2. Если добавить другой товар с тем же маркером, контрольное количество нужно пересмотреть, а не скрывать новые строки.

Ожидаемый результат

Две понятные задачи показывают смысл логических операторов без произвольного внешнего ввода.

На что обратить внимание

  1. ОграничиватьСтрокуПоиска проверяет ограничения платформы: 1000 символов и 32 слова. Одна проверка длины не считает слова.

  2. Морфология и настройки языка влияют на поиск; это не точное сравнение реквизита с текстом.

  3. Нечёткость, синонимы и групповые символы имеют отдельные ограничения. Не включайте их автоматически ради любого совпадения.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.