База данных состоит из 5 таблиц, первые три содержат данные различного рода, а так же специальные метки, по которым их можно найти.
Таблицы 1 - 3
_id | Name |...| metka1 | metka2 | metka3
Поля metka1, metka2, metka3 заполняются следующим образом - введенная фраза пользователя разбивается по отдельным словам и заносится в соответствующие порядковому номеру ячейки (но не более 3х слов).
Таблица 4
_id | metka
В данную таблицу заносятся все метки. Предварительно проверяю есть ли вводимая метка в базе, если нет, то добавляю новую строку.
Таблица 5
_id | ssilka_tabl | id_stroki | id_metki
Пятая таблица содержит ссылки на данные первых трех таблиц по индексам метки.
А теперь к выполнению поиска.
Введенный пользователем запрос я разделяю по словам в массив, для каждого слова нахожу индекс в таблице 4, а затем по индексу получаю массив ссылок на первые три таблицы. Перебирая массив я составляю список полученных ссылок, и в зависимости от количества совпадений меток выставляю вес, а потом сортирую по весу.
Дальнейшая логика приложения меня заводит в тупик, подскажите возможные варианты.
Как оптимально отсортировать результаты, чтобы выявить совпадения меток одной из таблиц, причем совпадать могут как все три метки, так и одна или две, в зависимости от веса отдавать предпочтение наивысшему значению.
Как выявить что совпали данные двух разных таблиц, причем в строке запроса пользователя метки не накладываются друг на друга. И так же как поступать, если совпали не все 3 метки, а часть из них.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости