SELECT *, WEIGHT() AS `weight`
FROM `index`
WHERE MATCH('*foo*')
LIMIT 15
OPTION
ranker = EXPR('SUM(min_hit_pos)')
задача вроде бы простая, ранжировать записи, в которых поле начинается с foo выше, чем те, в которых foo в середине строки. Наглядно, нужный порядок:
1. foo
2. foobar
3. barfoo
Однако min_hit_pos не подходит по причине того, что он считает не символы, а слова, т.е. для всех 3-х записей выше min_hit_pos == 1.
Может кто-то из вас решал/знает как решить такую задачу малой кровью? Пока что делаю 2 отдельных запроса, что не есть гуд конечно.
_____________
Профессиональная разработка на заказ
Я на GitHub | второй профиль