Повышение релевантности поиска на основе звездного рейтинга
Я создаю приложение на PHP с MySQL, в котором пользователи могут публиковать статьи, а также оценивать их по 5-звездочной системе. Я подумал, что мне следует немного переместить рейтинг с высоким рейтингом наверх, когда пользователь выполняет текстовый поиск, чтобы было легко найти лучшие статьи.
Я использую индекс MySQL FULL TEXT
для выполнения поиска, поэтому оценка релевантности исходит из этого поиска.
Интересно, как я мог бы использовать звездный рейтинг, чтобы изменить релевантность поиска (не расстраивая пользователя)?
Я, хотя и делаю простое умножение, чтобы повысить рейтинг релевантности в раз. Это сделало бы 5-звездочные статьи в 5 раз более актуальными, чем 1-звездочные, например:
SELECT *, (MATCH (title, tags, content) AGAINST('search terms')) *
rating AS score
FROM articles WHERE MATCH (title, tags, content) AGAINST('search terms')
ORDER BY score DESC
Это хорошая идея?
Я также подумал о том, чтобы умножить релевантность на логарифм рейтинга (плюс 1, чтобы избежать снижения релевантности, когда рейтинг ниже e), поэтому увеличение не так велико. Это также сделало бы статьи с плохим рейтингом, имеющие больше шансов, если релевантность выше. Утверждение будет выглядеть следующим образом:
SELECT *, (MATCH (title, tags, content) AGAINST('search terms')) *
(1 + LN(rating)) AS score
FROM articles WHERE MATCH (title, tags, content) AGAINST('search terms')
ORDER BY score DESC
Какой подход я должен использовать? Есть ли лучший метод? Или лучше игнорировать оценки пользователей и использовать только релевантность терминов?
( В качестве побочного вопроса, что будет с нерейтинговыми статьями?)
1 answers
Второй вариант звучит лучше. Вы обязательно должны учитывать оценки пользователей.
Что будет с нерейтинговыми статьями, Они, конечно, будут в конце списка, чего вы хотите, верно?