В итоге я создал функцию MySQL, которая преобразует строку в порядковый номер:
CREATE DEFINER=`root`@`localhost`
FUNCTION `stringToOrd`(str varchar(100)) RETURNS int(11)
READS SQL DATA
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
DECLARE ordinal INT;
SELECT ((ORD(SUBSTRING(str,1,1)) * 16777216)
+ (ORD(SUBSTRING(str,2,1)) * 65536)
+ (ORD(SUBSTRING(str,3,1)) * 256) + (ORD(SUBSTRING(str,4,1))))
into ordinal;
return ordinal;
END
Функция использует только первые четыре символа строки, поэтому сортировка будет приблизительной. Эта функция вызывается во время запроса индексации sphinx (в конфигурационном файле sphinx). Атрибут затем используется для сортировки во время поискового вызова сфинкса.
Это успешно работает в производственной среде уже более 6 месяцев.