2013-07-10 6 views
1

Я создаю индекс с Redis, используя отсортированный набор. Я хочу, чтобы за результаты сопоставления следующий порядок (меньше строки первой):Устранить магическое число в Redis

a 
ar 
art 
artu 
artur 
arturo 

Из Redis documentation я, используя счет для хранения данных:

Элементы считаются заказываются из самых высоких до минимальный балл.

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

Hash[ 
    'elem' => string 
    'score' => 1000 - string.size 
] 

Как удалить этот магический номер с чувством?

+0

Не так ли лексикографический заказ? –

+0

Понижающий лексикографический порядок используется для элементов с равным счетом. –

+0

Можете привести пример? –

ответ

2

Должен ли счет быть положительным? Если нет:

'score' => -string.size 

По сути, это замена 1000 с 0. 0 является одним из номеров, которые вы разрешено использовать без его рассматривать волшебство!

+0

Хорошая точка, кажется, работает! Но это как трюк, что происходит, если не разрешено отрицательное число? –