производителя
Мне надо написать запрос, который бы позволил мне искать по тексту (допустим мы это сделали триграммами)
Разумеется желательно, чтобы вытаскивались только первые несколько записей, а не весь набор
А по результатам поиска (т. е. среди всех совпадающих записей) также хочу определить какие производители доступны для дальнейшей фильтрации. Т. е. сделать фильтр фильтра.
Например:
Скажем, есть производители: Шоколадная Фабрика Россия, Автозавод Ваз, Автозавод Зил
Ну и я вот ввёл в поиск автомобиль, и он показал мне кучу автомобилей
А второй запрос, возвращающий список поставщиков, показал Автозавод Ваз, Автозавод Зил, а Шоколадную фабрику не показал, т. к. она не производит автомобили.
Как такое делается по-умному? Т. е. чтобы эффективно было. Реально ли такое вообще без полного сканирования удовлетворяющих критерию записей?
Вопрос не про Postgres, а скорее про алгоритмы, но можно порассуждать. Реально ли такое вообще без полного сканирования удовлетворяющих критерию записей? Очевидно, нет. Если хотите найти полный набор фильтров, надо найти и все элементы. А еще, наверное, учесть, есть ли они в наличии и т.п., тут уж не знаю вашу предметную область. Решение, которое вижу я, такое: Извлекаем все элементы и все параметры фильтрации, т.е. получаем табличку, где, условно, в первой колонке будет товар, во второй производитель, в третьей поставщик и т.д.. И уже из этой таблицы получим все что необходимо, причем за один проход.
Обсуждают сегодня