Я проектирую веб-сайт, который заказывает результаты по его голосам и возрасту.PHP MYSQL Query Algorithm Help
Я нашел алгоритм reddit, и я думаю, что это лучше всего использовать. Однако я не знаю, как реализовать это в php. Я искал google о том, как это сделать, но я не могу найти никаких результатов. Я не знаю, просто ли это потому, что я точно не знаю, что искать.
Я знаю базовый PHP, однако, есть способ сделать это простым способом.
Можно ли сделать это следующим образом:
"SELECT * FROM table ORDER BY algorithm_here DESC";
Алгоритм Reddit выглядит следующим образом:
Log10(Z) + ((Y*Ts)/45000) = rank
A = time posted
B = 00:00:001 am 1/1/2010
U = Up votes
D = Down votes
Ts = A-B
X = U-D
Y =
1 if x>0
0 if x=0
-1 if x<0
z = max(abs(x),1)
Я знаю, как создавать функции в PHP. Например, функция test() {... Однако будет ли это работать для запроса? функция rankalgorithm ($ a, $ u, $ d) { $ ts = $ a - 1262304001; $ x = $ u - $ d; if ($ x> 0) \t $ y = 1; elseif ($ x = 0) \t $ y = 0; elseif ($ x <0) \t $ y = -1; \t $ z = max (abs ($ x), 1); $ rank = log10 ($ z) + (($ y * $ ts)/45000); print ($ rank); } – Xplane 2010-12-05 19:52:47
Нет создания функции в php вовсе не рекомендуется. Потому что, если u делает это, единственный способ заставить его работать правильно - загрузить все строки и передать каждый из них через fn, чтобы сгенерировать ранг, а затем переупорядочить список с помощью рангов, а затем перерезать его на нужную страницу. это будет работать, если у вас всего меньше строк, например, 1000 строк или около того. bt если u имеет более 1 lakh строк и все. его невозможно запустить, поскольку у php будет нехватка памяти при загрузке всех строк. Итак, лучший способ сделать это - через mysql. Но вам не нужно идти с UDF как его значительно продвинутым. – 2010-12-05 20:00:39