Я создаю приложение на PHP с MySQL, где пользователи могут публиковать статьи, а также могут оценивать те, у кого есть 5-звездная система. Я думал, что я должен переместить высокий рейтинг немного вверх, когда пользователь выполняет текстовый поиск, поэтому лучшие статьи будут легко найдены.Повысить релевантность поиска по рейтингу star
Я использую индекс 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
Какой подход я должен использовать? Есть ли лучший метод? Или лучше игнорировать рейтинги пользователей и использовать только релевантность терминов?
(В качестве побочного вопроса, то, что случилось бы с не рейтингом статей?)