Прикладываю наработки по Food assistant'у. Шаг 1: Создаем таблицуCREATE UNLOGGED TABLE IF NOT EXISTS foods ( id SERIAL PRIMARY KEY, title TEXT UNIQUE, protein NUMERIC (5, 2) default NULL, fat NUMERIC (5, 2) default NULL, carbohydrate NUMERIC (5, 2) default NULL, kcal NUMERIC (5) default NULL ); -- Хранимая процедура поиска по title мультиязычно CREATE OR REPLACE FUNCTION to_tsvector_multilang (title TEXT) RETURNS tsvector as $$ SELECT to_tsvector('russian', $1) || to_tsvector('english', $1) || to_tsvector('simple', $1) $$ LANGUAGE SQL IMMUTABLE; -- Полнотекстовый поиск по тайтлу CREATE INDEX idx_gin_foods ON foods USING GIN (to_tsvector_multilang(title)); Шаг 2: Импортируем CSV файлШаг 3: Выполняем запросSELECT id, title, protein, fat, carbohydrate, kcal FROM foods WHERE to_tsvector('russian', title) @@ plainto_tsquery('russian', 'Вермут'); БД содержит 522 элемента. Получить все необходимые данные можно на gist. |
Новости >