SQLite Для каждой строки запроса q найти топ релевантных документов. У Риты есть база данных фильмов: CREATE TABLE films ( id INTEGER PRIMARY KEY, title TEXT ); INSERT INTO films VALUES (0, 'I love coffee'); INSERT INTO films VALUES (1, 'We can rent flat'); INSERT INTO films VALUES (2, 'Mine'); INSERT INTO films VALUES (3, 'Love story'); INSERT INTO films VALUES (4, 'Comedy Love Story'); INSERT INTO films VALUES (5, 'Watch TV Online'); INSERT INTO films VALUES (6, 'My Example'); INSERT INTO films VALUES (7, 'Example by Ilya'); INSERT INTO films VALUES (8, 'Easy Money'); INSERT INTO films VALUES (9, 'Mountains Love'); INSERT INTO films VALUES (10, 'Banana brain'); INSERT INTO films VALUES (11, 'I think your freaky'); INSERT INTO films VALUES (12, 'Math republic'); INSERT INTO films VALUES (13, 'Hello World Programming'); INSERT INTO films VALUES (14, 'Invade Military Country'); INSERT INTO films VALUES (15, 'We do not deserve'); INSERT INTO films VALUES (16, 'Easy Easy Easy'); На вход ее программа получает строку запроса q которая может содержать одно или несколько слов. Для каждого такого запроса необходимо найти 3 самых релевантных документа. Релевантность документа считает следующим образом: Для каждого слова из q если такое слово есть в названии показатель rel увеличивается на 1 И так для всех слов из q В результате для каждого фильма имеется некое значение rel Слова - это последовательности разделенные пробелами. Условия вывода В результате есть колонки (id, rel, matched_words) Ответ ограничен 3 фильмами Сначала выводим самые большие значения rel, если они совпали, то выводим запись с наименьшим индексом. Регистры не учитываются, нам не важно с большой буквы слово в запросе или в названии Колонка matched words выводит все слова из запроса, которые были в документе в порядке их появления в документе. Для простоты мы сравниваем слова целиком. Coffee != Coffeeeee Пример вывода 1 q = 'Coffee Love' id rel matched_words 0 2 love coffee 3 1 love 4 1 love Пример вывода 2 id rel matched_words 2 1 mine.