[Tartarus] Алгоритм для вычисления наиболее используемых записей

Dmitriy M. Maslennikov =?iso-8859-1?q?maslennikovdm_=CE=C1_gmail=2Ecom?=
Вс Янв 11 19:50:59 MSK 2009


11 января 2009 г. 19:34 пользователь Yuri Bushmelev
<jay4mail на gmail.com> написал:
> При первом использовании элемента добавляем его в список, где дополнительно
> храним timestamp последнего использования и кол-во использований.
> Соответственно, при следующем использовании увеличиваем счетчик и обновляем
> timestamp.
>
> При выводе для сортировки используем функцию для выбора top-10, зависящую от
> времени последнего использования и счетчика. Пусть она
> возвращает "приоритет". Простейший пример - кол-во дней с момента
> последнего использования * 10 000 000 + кол-во использований. Правда, если
> элемент вчера использовали 10 000 011 раз, то он все равно обгонит всех
> сегодняшних, использованных по одному разу. Поэтому надо придумать что-то
> более умное, но тут бы теоретика надо :)
>
> Периодически отдельным потоком (thread'ом) можно этот
> список "перетрахивать", дабы не хранить там кучу старья. Можно просто
> выбирать top-10 и удалять остальное. Ибо счетчик использования не
> уменьшается.
>
> Вот как-то так :)
В данной схеме дни использования являются слишком решающим фактором.
Так, в ней 100 раз использованная вчера запись имеет меньший
приоритет, чем один раз, но сегодня. Мне же кажется, что правильнее
наоборот. Хотя, надо еще подумать. Кроме того, я думаю что не стоит
так привязываться к дням: элементы, использовавшиеся утром должны (или
нет???) быть менее приоритетными, чем вечером. Что понравилось, так
это малое количество хранимой информации (мне почему-то лезли в голову
схемы с хранением некоторого числа использований - вместе со временем
использования - для некоторого, большего чем число выводимых
элементов, числа наиболее приоритетных в данный момент записей), и как
следствие очень быстрый просецц вычислений.

-- 
Dmitriy M. Maslennikov
rlz на etersoft.ru
rlz на altlinux.org
maslennikovdm на gmail.com
master на armory.ru


Подробная информация о списке рассылки Tartarus