2013-09-27 1 views
3

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

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

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

ответ

0

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

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