Задать вопрос
  • Почему telethon просит авторизацию при каждом запуске при созданном файле сессии?

    @Luhashan
    У меня такая же проблема. Вам удалось ее как-то решить? Буду очень признателен, если поделитесь решением.
    https://qna.habr.com/q/1255870
  • Полнотекстовый поиск PostgreSQL внутри JSON, индекс внутри JSON?

    @Luhashan Автор вопроса
    galaxy, Да, огромное вам спасибо, написал вам сообщение на habr. Понял что не с того начал, чтобы было с чем сравнить сделал теперь все как и положено. Весь "TEXT" вынес в отдельную таблицу, создал там колонку с tsvector, проиндексировал ее и получилось прекрасно, 50мс на запрос.
    Выводы которые я сделал: postgres плохо оптимизирует работу с json, как вы и написали, tsvector очень дорогая операция, документация у postgres не показалась мне идеальной, в юзкейсах tsvector нужно жирным писать, что без предварительного построения tsvector поиск будет более чем медленный, либо при первом обращении к этой функции под капотом строить скрытую колонку векторов и потом юзать ее как неявную часть таблицы. Еще раз большое спасибо!
  • Полнотекстовый поиск PostgreSQL внутри JSON, индекс внутри JSON?

    @Luhashan Автор вопроса
    Если у вас поля в этой строке содержат множество значений в запакованном виде (в json, например), индекс нужное значение не поможет распаковать.

    Но ведь по конкретному ключу в json ведь можно индекс построить и с ним будет немного быстрее запрос идти, значит он работает?
    Смысл индексировать массив очевидный: вы хотите искать только по полям с ключом TEXT, если проиндексировать весь JSON, будет искать по лишним полям, так что сначала надо вытащить их (вы делаете то же самое в запросе с jsonb_array_elements).

    Кстати сделал вектор и проиндексировал весь JSON. Тот же запрос выполняться стал немного быстрее 0,9 сек. Как-то странно это, казалось бы вашим методом локализуем максимально поиск, а работает в итоге медленнее, если тупо без локализации проиндексировать весь JSON и искать по нему :(
  • Полнотекстовый поиск PostgreSQL внутри JSON, индекс внутри JSON?

    @Luhashan Автор вопроса
    Спасибо за ответ, протестил ваш вариант на базе 2К строк, 74К значений "TEXT".
    Без индекса простейший запрос 1,8 сек. С индексом 1,3 сек. Как-бы не особо.
    Вот такой тупой вариант:

    select * FROM 
      (select jsonb_array_elements(col->'obj') -> 'TEXT' as text  from t) as one
      where to_tsvector('pg_catalog.english', one.TEXT) @@ to_tsquery('function')


    работает 1,1 сек. Как бы тоже не особо.

    Еще попробовал регуляркой - 0.4 сек.

    Собственно, вопрос был в том, как проиндексировать каждое поле 'TEXT' внутри json-масива, а не массив этих полей (честно говоря не очень понимаю какой смысл индексировать массив из строк, если поиск идет по строкам, но это ладно) и возможно ли это ?

    Попробовал вот так, но ругается на второй аргумент в to_tsvector

    CREATE INDEX ix_t_col ON t
    USING gin (to_tsvector('pg_catalog.english',  jsonb_array_elements(col->'obj') -> 'TEXT'))


    Интуитивно, posgresql должен создать индекс каждого поля 'TEXT' через ссылку на таблицу-колонку-jsonb-obj-массив-позицию в массиве. Это же возможно? Чем json отличается просто от поля в таблице? Только дополнительным path к искомому значению.
    Но вот как сделать не понимаю пока, изучаю posgresql всего третий день... :(
  • Полнотекстовый поиск PostgreSQL внутри JSON, индекс внутри JSON?

    @Luhashan Автор вопроса
    rPman, Согласен, просто интересно можно так сделать или нельзя от слова совсем.
  • Полнотекстовый поиск PostgreSQL внутри JSON, индекс внутри JSON?

    @Luhashan Автор вопроса
    Dr. Bacon, Да, для конкретного ключа ок. Но вот для данных внутри jsonb массива возможно ли? В принципе через jsonb_array_elements для поиска по шаблону или регуляркой я эти данные достаю, но можно ли их проиндексировать превратив перед этим в tsvector?
  • Почему transitionend не срабатывает и что конкретно происходит при изменении в DOM дереве?

    @Luhashan Автор вопроса
    Алексей Дубровин, По мне так это просто баг браузеров, а не фича.
    Например попробуйте запустить тот же код в mozilla firefox и пообновлять страницу. Иногда будет работать transition, иногда нет, хотя в официальной документации указано, что свойство поддерживается и нигде не сказано, что работа этого свойства зависит от того, как быстро браузер сможет отрендерить картинку и на основе чего принимается решение показывать анимацию свойства или не показывать.
    100%-ный баг.
    Что касается вашего аргумента относительно оптимизации, то он, на мой взгляд, несостоятельный вовсе. Есть стопяцсот способов и без всякого рендеринга намертво подвесить браузер, коими многие "программисты" умело и пользуются.
    Еще раз. На мой взгляд свойство если уж оно есть, должно работать корректно, как написано в коде - переставить, а потом применить, а не как бог на душу положит (см. mozilla firefox), то есть сейчас браузер на ваш код по факту отвечает чем-то следующим: мы тут подумали с товарищами и решили, что код твой неоптимизирован и решили тебе помочь, чувак, вот эти строчки мы выкидываем нахрен, они нам не нравятся, это работать не будет. В другой раз на такой-же код браузер отвечает, ну сегодня у меня ничего так настроение, вроде как все рендерится без ошибок, пусть, хрен с тобой сделаем как у тебя написано :)
    Но, код должен работать так, как его написал программист. Если же код плохой, то никакая оптимизация не поможет. Применительно к transition -- даже если я всей странице пропишу это свойство, это должно работать так: при загрузке пустой экран, а потом появляются элементы.
    Или я чего-то не понимаю.
  • Почему transitionend не срабатывает и что конкретно происходит при изменении в DOM дереве?

    @Luhashan Автор вопроса
    Алексей Дубровин, Ну мой мега дебаггер говорит о том, что по логике это должно работать так:
    1. Убирается элемент дерева со ссылкой на его свойства.
    2. Вставляется элемент дерева.
    3. Лепятся к вставленному элементу нему его свойства по ссылке.
    4. Отрабатываются прилепленные свойства.

    По вашему варианту в пункте 4 следует читать: "Отрабатываются некоторые прилепленные свойства, а на ряд свойств забивается болт". Можно ссылку на документацию, где это сказано? :)
    Заранее спасибо.
  • Почему transitionend не срабатывает и что конкретно происходит при изменении в DOM дереве?

    @Luhashan Автор вопроса
    Тк как она рисует уже с применёнными эффектами

    А почему эти "примененные" эффекты по факту не применяются? Никакого transition-duration: 1s; не происходит. Выходит, на это свойство элемента просто забивается болт?