Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите, как реализовать такую задачу:
Имеются статьи, у статей есть теги. Хочу для каждой статьи выводить список похожих статей на основании совпадений в тегах. Причем сортировать нужно по числу таких совпадений. Т.е. чем больше общих тегов, тем статья должна быть выше.
Неактивен
Если теги в отдельной таблице (article_id, tag_id), то
select article_id from `таблица связей` group by 1 order by count(*) desc;
select ... from `таблица статей` order by field(id, список article_id из прошлого запроса); -- например, field(id, 5,12,8,3);
Неактивен
vasya, спасибо огромное, то что нужно!
Неактивен
Столкнулся с такой проблемкой. Хотел еще выводить статьи с совпадением по имени. Использую fulltext индекс для сортировки:
WHERE
`articles`.`id` IN (".implode(', ', $articles_id).")
OR MATCH(`articles`.`name`) AGAINST('имя исходной статьи') >= 1
ORDER BY
FIELD(`articles`.`id`, ".implode(', ', $articles_id)."),
MATCH(`articles`.`name`) AGAINST('имя исходной статьи') DESC
хочу в итоге получить:
сначала совпадения по тегам, потом совпадение по имени.
Но результат почему-то вперемешку, почему так?
Неактивен