"Интеллектуальный" способ сортировки параметров, основанный на предыдущем использовании пользователя

У нас есть UIPickerView в нашем приложении, которое в настоящее время показывает свой список опций (около 7 из них) в порядке, установленном кодом.

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

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

Например. Скажем, пользователь ищет самые высокие объекты для назначения. Они будут делать много поисков и сортировать их по высоте. Это увеличило бы "height.score" до большого числа, в то время как все остальное остается на 1 или 0.

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

Есть ли способ иметь такую ​​же функциональность, но сделать ее более умной?

Я думаю о чем-то вроде системы рейтингов Эло, но AFAIK это работает только тогда, когда есть два "игрока". Есть ли другая рейтинговая система, которая позволяет нескольким "игрокам"?

Это может быть лучше подходит для обмена программистами. Дайте мне знать, и я поставлю это вместо этого.

1 ответ

Вы можете оценить эти факторы в "недавно использованном" компоненте. Примерно так: Когда выбран вариант, добавьте к нему 3 точки и удалите точку (или даже кратную 0,5) друг от друга. Также есть максимальная кепка по очкам. В вашем примере это первоначально повысило бы "Рост" на вершину списка, но несколько вариантов "Веса" подняли бы его, оставив "Рост" на втором месте на долгое время. Есть несколько способов сделать это, вы можете посмотреть на некоторые симуляции, используя различные расчеты, и посмотреть, что приводит к сортировке, которая вам больше нравится.

Другие вопросы по тегам