Size: a a a

1С, БСП, DevOps и Архитектура

2020 April 14

М

Михаил in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
Сколько серверов в кластере?
один, но воспроизводит и на файловой
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
John Doe
А кто ж его разберет. Это черный ящик.
На твоем месте я б для начала убедился, что там используется именно ППД, а не запрос к БД.
Если отключить ППД в базе поиск отрабатывает как положено
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Михаил
Если отключить ППД в базе поиск отрабатывает как положено
Ну вот и выяснили, что это ППД шалит
источник

Аr

Андрей reborn in 1С, БСП, DevOps и Архитектура
John Doe
Ну вот и выяснили, что это ППД шалит
Самое не понятное почему разработчики платформы не видят в этом ошибку.
источник

Аr

Андрей reborn in 1С, БСП, DevOps и Архитектура
Данная проблема воспроизводится на любой базе
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Андрей reborn
Самое не понятное почему разработчики платформы не видят в этом ошибку.
К ним с поклоном не пришёл, вот и не видят)
источник
2020 April 15

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Михаил
Здравствуйте разработчики. Говорят тут могут ответить на вопрос почему поиск не ищет данные, УТ 11.4.11.93 демо, платформа 8.3.16.1296, индекс полнотекстового поиска очищен и обновлен, почему не ищет? На первом скрине 8 результатов, на втором 2, на третьем тоже должно быть 2, но ничего нет
http://joxi.ru/Dr83O8ahz6Kz9A.jpg
у тебя в быстром поиске при поиске по ключу "45" и "455" полнотекстовый поиск не использовался. В последнем же случае у тебя ключ "4455" и результат отсутствует - в этом случае, скорее всего полнотекстовый поиск использовался, он завершился без ошибки и вернул 0 результатов. Т.е. ничего не начинается по ключу "4455" с учетом всех разделителей. Если полнотекстовый поиск отрабатывает без ошибок и возвращает 0 результатов, то не полнотекстовый поиск потом не запускается - такая особенность, поэтому у тебя там и пустая таблица. Почему при "45" и "455" полнотекст не использовался? Скорее всего, он был использован, результатов по итогу было > 10 000, и поэтому такой результат был отброшен, и запущен не полнотекстовый поиск.
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Г🐈рри
у тебя в быстром поиске при поиске по ключу "45" и "455" полнотекстовый поиск не использовался. В последнем же случае у тебя ключ "4455" и результат отсутствует - в этом случае, скорее всего полнотекстовый поиск использовался, он завершился без ошибки и вернул 0 результатов. Т.е. ничего не начинается по ключу "4455" с учетом всех разделителей. Если полнотекстовый поиск отрабатывает без ошибок и возвращает 0 результатов, то не полнотекстовый поиск потом не запускается - такая особенность, поэтому у тебя там и пустая таблица. Почему при "45" и "455" полнотекст не использовался? Скорее всего, он был использован, результатов по итогу было > 10 000, и поэтому такой результат был отброшен, и запущен не полнотекстовый поиск.
всего 213 записей в таблице, "45" и "455" 8 и 2 совпадения - нет 10 тыс результатов, это демо база
попробовал настроить техножурнал чтобы увидеть события component=rserver,class=FtextMngrRHost, но не получилось или поиск не отрабатывает или настроил неправильно
даже если полнотекстовый поиск вернул 0 результатов, надо исправлять "особенность" и искать в базе через like
получается если полнотестовый поиск по началу строки ничего не нашел - значит результатов поиска нет
при этом, когда поиск успешный, строка поиска всегда выделяет вхождения в строку, она не выдает только результаты которые совпадают с началом строки
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
как ты определил что у тебя полнотекст вернул 213 записей?
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Г🐈рри
как ты определил что у тебя полнотекст вернул 213 записей?
всего в базе 213 элементов справочника, поиск по колонкам артикул и наименование не может выдать 10 тыс результатов
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
а в списке есть видимые колонки из других таблиц?
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Г🐈рри
а в списке есть видимые колонки из других таблиц?
нет, 2 колонки
пример такой чтобы было минимум возможных косяков
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
а внеси какой-нибудь пример, однозначно чтобы результат = 1, типа 87895Стол. После этого обнови полнотекст, и вбей ключ "8789" - будет результат?
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Г🐈рри
а внеси какой-нибудь пример, однозначно чтобы результат = 1, типа 87895Стол. После этого обнови полнотекст, и вбей ключ "8789" - будет результат?
по началу строки есть результаты
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Поддержка дала ответ, разъяснив что с точки зрения документации и алгоритма поиска все верно
я понимаю что с точки зрения алгоритмов все верно
но не понимаю почему отсутствие результата когда он должен быть - верно
как мне пользователю объяснить что "1с сказала, что поиск работает, но не гарантируется их правильность и наличие результата когда поиск идет по части строки" ☹️
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Михаил
Поддержка дала ответ, разъяснив что с точки зрения документации и алгоритма поиска все верно
я понимаю что с точки зрения алгоритмов все верно
но не понимаю почему отсутствие результата когда он должен быть - верно
как мне пользователю объяснить что "1с сказала, что поиск работает, но не гарантируется их правильность и наличие результата когда поиск идет по части строки" ☹️
а какой ответ, почему по первым двум ключам полнотекст не использовался?
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
"Для динамических списков с указанной основной таблицей используется полнотекстовый поиск по основной таблице. К результатам полнотекстового поиска будут добавлены все непроиндексированные ссылки из основной таблицы."

Это значит, что поиск будет произведен с помощью полнотекстового поиска и те объекты, которые с помощью него не будут найдены, гарантированно не попадут в выборку, полученную в результате. Кроме того, непроиндексированные объекты будут искаться по стандартному алгоритму (но это не наш случай, т. к. индекс только что обновлен)

Документация:
"Если при попытке выполнить полнотекстовый поиска произошла ошибка, поиск будет выполняться без применения полнотекстового поиска."

Это значит, что если полнотекстовый поиск не смог вернуть результаты, весь поиск будет произведен по стандартному алгоритму. Как раз это и происходит при поиске строк "45" и "445", ниже объясняю почему

Документация:
"Например, такое может произойти при поиске по одной букве и большому количеству строк в информационной базе, начинающихся с этой буквы."

Обратите внимание на слово "например". Ошибка также может возникать при поиске строк, начинающихся на строку из двух и более символов, просто это происходит реже. Ища в динамическом списке строку "445", Вы ищете при помощи полнотекстового поиска все, что на нее начинается (то есть, формируется запрос "445*"). Полнотектсовый поиск не сможет выполнить такой запрос, поскольку в базе слишком много слов, начинающихся на "445".
Приложенная конфигурация находится в режиме совместимости с версией 8.3.12. Начиная с режима совместимости с версией 8.3.13 гарантируется возврат результата полнотекстовым поиском при поиске по началу строки длиной от трех до семи символов, если возможно выдать результат, что значит, что при поднятии режима совместимости конфигурации и перестроении индекса полнотекстового поиска Вы также не получите результат при поиске в динамическом списке по строке 445, так как полнотекстовый поиск ничего по ней не найдет и это не будет являться ошибкой.

Документация:
"Для каждого слова формируется свой набор условий, которые объединяются «по ИЛИ». Этот набор условий формируется в том случае, если полнотекстовый поиск данного слова в таблице, из которой было получено данное поле, вернул хотя бы один объект или полнотекстовый поиск не использовался для этого поля. Условия формируются следующим образом:"

Здесь написано, что следующий набор условий формируется для фильтрации результатов полнотекстового поиска в случае, если он вернул результаты и для поиска, если полнотекстовый поиск завершился с ошибкой. Данный алгоритм не будет дополнять результаты поиска при помощи полнотекстового поиска.
Последнее означает, что если полнотекстовый поиск не нашел ничего по запросу "4455*" (что абсолютно логично, так как ни одна строка не начинается на 4455) и не завершился с ошибкой, то результаты будут пустые. Тем временем, по запросу "445*" полнотекстовый поиск не смог выдать результаты, так как в базе слишком много слов, начинающихся на данную строку. Из-за того, что полнотекстовый поиск завершился с ошибкой, динамический список производит поиск по стандартному алгоритму и находит вхождения этой подстроки в середины строк.

Таким образом, данное поведение все же является ожидаемым.
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Получается, то что я тебе писал выше про 45 и 445, что там из полнтотекста пришло более 10 000 результатов - верно? Я вижу, что это так. Т.е. когда ты писал "всего в базе 213 элементов справочника, поиск по колонкам артикул и наименование не может выдать 10 тыс результатов"" - ты видимо, ошибся, в подсчетах. По хорошему, я бы на твоем месте дальше спросил - а откуда получились "слишком много слов" в твоей демо базе.
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Т.е. в ответе суппорта есть: "Полнотектсовый поиск не сможет выполнить такой запрос, поскольку в базе слишком много слов, начинающихся на "445"." А ты насчитал какое-то маленькое количество - отсюда видимо и пошел подвох
источник

М

Михаил in 1С, БСП, DevOps и Архитектура
Г🐈рри
Т.е. в ответе суппорта есть: "Полнотектсовый поиск не сможет выполнить такой запрос, поскольку в базе слишком много слов, начинающихся на "445"." А ты насчитал какое-то маленькое количество - отсюда видимо и пошел подвох
не знаю где он столько нашел
источник