Сортировка материалов на основе кол-ва совпадающих тегов?

Главные вкладки

Аватар пользователя Telefax Telefax 28 декабря 2017 в 13:08

Задача - вьюсами выводить подборку статей максимально релевантных текущей статье на основании тегов. В данный момент это реализовано такими настройками:

Configure contextual filter: Содержимое: Has taxonomy term ID (with depth)

Allow multiple values

Multiple-value handling
Filter to items that share any term

Но вывод не всегда корректен. Можно ли (и как) сделать сортировку вывода по кол-ву совпадающих тегов, т.е. чтобы выводились ноды где максимально совпадающее кол-во тегов с текущей нодой?

Комментарии

Аватар пользователя Orion76 Orion76 29 декабря 2017 в 23:34

хмм.. допустим у исходной ноды 5 тегов..
Наиболее релевантны ей будут ноды, содержащие те же 5 тегов..
Следующий уровень релевантности: ноды содержащие 4 тега.
Вариантов комбинаций этих тегов: 5
выборка по ним будет примерно в 5 раз больше предыдущего уровня..
Если их не особенно большое кол-во, чем необходимо пользователю, которому они выводятся, польза от выборки еще есть..
А если их слишком много, их как-то тоже надо сортировать, иначе большого смысла в них не будет..
С последующими уровнями будет тоже "ухудшение пользы выборки" по нарастающей почти в геометрической прогрессии..

А не проще ли будет просто расставить теги в нодах в порядке увеличения некоего веса(тут Вам решать, исходя из того, какие Ваши задачи должна решать выборка).
А в вьюсе брать конкретное число первых тегов ноды (в зависимости от того сколько у Вас материалов, и какое количество в среднем такая выборка будет выдавать результатов) и по ним делать выборку.

Если выборка по каким-то критериям будет не удовлетворительна, можно сделать 2-3 вьюса с уменьшающимся кол-вом первых тегов для фильтрации выборки, и соединить их результат в шаблоне вывода первого вьюса..
Если очень надо, можно изловчиться и закэшировать результаты всех вьюсов.. тогда и скорость работы не пострадает..

Аватар пользователя jsv jsv 5 января 2018 в 12:06

да ладно, это-то мелочи. Я сопровождал сайт, у которого эта проблема решалась через поиск - а нод на сайте было овер 100К

Аватар пользователя jsv jsv 5 января 2018 в 12:07

Я бы программного лучше бы блок тут написал - не такой сложный выйдет и менее затратный по нагрузке, чем через views