Как вы можете оценить свежесть даты в поиске MySQL? - PullRequest
1 голос
/ 03 декабря 2011

У меня довольно стандартный поисковый запрос для поиска соответствующего контента. Помимо прочего, он присваивает оценки на основе взаимосвязи названий статей и содержания, а также категорий и т. Д. Все довольно стандартные вещи. Я также хотел бы добавить взвешенную «свежесть», основанную на дате публикации статьи.

Как я могу уменьшить опубликованное «datetime» статьи до оценки, которую можно сравнить как часть общей оценки. ПРИМЕЧАНИЕ: оценка должна быть порядка MATCH () ПРОТИВ и т.д.

Выбор существующей оценки:

SELECT *, 
MATCH (content) AGAINST ( 'some keywords from content') ) *1 + 
(MATCH ( title ) AGAINST ( 'some kewords from title ') ) * 1.5 + 
COUNT( matching_terms ) *3, 1 ) / 5.5 
AS score
FROM ....`

Ответы [ 3 ]

4 голосов
/ 03 декабря 2011

Следующая функция масштабирует разницу дат до заданного диапазона ожидаемых значений в диапазоне от 0,5 до максимум около 3 в течение трехлетнего периода.Затем можно придать отрицательный вес предпочтению свежести.

SELECT *, (LN(LN(-1/(datediff(published_time, now())+1)) + 1)

Оценка за три года.

Wolfram alpha

Оценка за один месяц

The score over one month

Две функции LN () предназначены для обеспечения потолка в диапазоне 5-6, чтобы он был намного меньше, чем типичный результат матча.Он также взвешивает это так, что статьи, начинающиеся с двух недель, сильно предпочтительны.Один LN () имеет диапазон около 0,5-9, причем первые 30 дней являются наиболее предпочтительными.

1 голос
/ 03 декабря 2011

Теперь вычтите, чтобы получить «возраст» и преобразовать в число, например,

select 1/((now()+0 - published_date_field) as number) * your_weighting_factor;
0 голосов
/ 03 декабря 2011

Применить другое вычисление к баллу, например: -

 select
 (... ) + (datediff(published_time, now())  <-- diff in days
 as score

В приведенном выше примере всегда будут опускаться старые истории, поскольку дата
всегда будет возвращать ноль или отрицательное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...