Хороший алгоритм ранжирования драгоценных камней - PullRequest
1 голос
/ 12 февраля 2011

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

Вот пара сценариев, для которых алгоритм ранжирования будет работать хорошо:

  • Существует популярный гем под названием GEM1, который выполняет XYZ.GEM1 был выпущен в течение года и занимает первое место среди драгоценных камней, которые делают XYZ.Новый драгоценный камень, GEM2, который также делает XYZ, выпущен и явно лучше, чем GEM1.GEM2 должен быть в состоянии быстрее, чем GEM1.
  • Существует драгоценный камень высокого уровня по имени GEM1.Выпущена новая версия Rails, и GEM1 не работает для этой версии.По прошествии достаточного количества времени (вероятно, столько же, сколько потребуется большинству людей, чтобы начать использовать новую версию Rails), и GEM1 по-прежнему не поддерживает эту версию, он должен потерять свой высокий рейтинг.

Некоторая информация, которую мы имеем в наличии для драгоценных камней:

  • количество загрузок
  • количество загрузок для текущей версии
  • , еслигем размещен на github, у нас есть несколько форков и наблюдателей (хотя гем не должен опережать другой гем, потому что он находится на github)

Эта информация может быть частью алгоритма (наряду сс голосами «за» или «звездами» или всем, что нам нужно собрать от пользователей).

Так что мой вопрос, можете ли вы придумать хороший алгоритм (не точный, конечно, просто опишите его), который мог бы справиться с этими сценариямиили, по крайней мере, сможете дать полезный совет или направить меня в правильном направлении.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Количество загрузок, на мой взгляд, не очень полезный счетчик. Вероятно, существуют фрагменты кода, которые не работали в течение многих лет, но все еще проверяются (то есть загружаются) тысячами людей каждый месяц.

  1. Попросите подателя указать, в какой версии Rails был создан код. Хотя он может решить не все ваши проблемы, поскольку они не могут предсказать, какая более поздняя версия Rails его сломает, для указания этой информации требуется две секунды. и это может сэкономить много времени в будущем. Отобразите это на странице загрузки.
  2. Попросите загрузчика оценить код ... скорость выполнения, надежность выполнения, читаемость кода, простота установки, документирование и т. Д.
2 голосов
/ 12 февраля 2011

http://ruby -toolbox.com / Categories.html отличный сайт, который делает что-то подобное.Они просто ранжируются по загрузкам, но не всегда верно, что самая загруженная из них - лучшая IMO.Активность на github и т. Д. Должна быть показана, потому что я вряд ли попробую что-то новое, что активно не разрабатывается.

Я думаю, что загрузки должны что-то значить и, возможно, затухать в логарифмическом масштабе.деятельность по развитию также должна учитываться.Кроме того, вы можете добавить отзывы пользователей и включить это тоже.Я думаю, что эти метрики могут быть изменены с определенными весами, чтобы увидеть, что будет ранжировать вещи наиболее подходящим образом.Возможно, вы также можете предложить авторам написать то, что предлагает их жемчужина, чего нет в других классах.

Я думаю, что обрабатывать камень, который неожиданно не обрабатывает новый фреймворк и т. Д., - это иметь кнопку понижения, где пользователи могут понизить голос и указать причину из предоставленного вами списка.Если драгоценный камень внезапно начинает получать голосование, не имеет недавней активности, и загрузки уменьшаются, то он упадет.Затем вы можете указать это с помощью стрелки вниз, указывающей, что она имеет тенденцию к снижению.Наиболее популярные причины могут быть перечислены.

...