Повышение релевантности поиска на основе звездного рейтинга


Я создаю приложение на 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

Какой подход я должен использовать? Есть ли лучший метод? Или лучше игнорировать оценки пользователей и использовать только релевантность терминов?

( В качестве побочного вопроса, что будет с нерейтинговыми статьями?)

Author: George Marques, 2013-09-28

1 answers

Второй вариант звучит лучше. Вы обязательно должны учитывать оценки пользователей.

Что будет с нерейтинговыми статьями, Они, конечно, будут в конце списка, чего вы хотите, верно?

 0
Author: Esqarrouth, 2013-11-05 23:29:28