сортировка по релевантности и по RAND()

Kirill

Новичок
сортировка по релевантности и по RAND()

Есть запрос, где данные сначала сортируются по релевантности - полнотекстовый поиск, затем по vip, затем по rand().
Схематично запрос выглядит так:
SeLECT
...
FROM
...
WHERE
MATCH() AGAINST ()
...
ORDER BY vip DESC, RAND()
Причем возможны варианты полнотестового поиска в режиме BOOLEAN.

Пошарился по нету - пишут что если сортировка с RAND() то лучше сортировать только по одному RAND(), по другим нежелательно. Проверил свой запрос на примере таблицы из 20 записей вроде все работает и не тормозит.
Может кто подскажет, есть ли какие-нить подводные камни?
 

Wicked

Новичок
... 20 записей ... и не тормозит.
.-)

Интересно, а почему я не вижу в приведенном тобой запросе сортировки по релевантности?

Вообще, order by rand() - довольно нехорошая конструкция. Я бы предпочел limit $rand_position_in_result_set, 1, но для этого сначала нужно узнать кол-во результатов.
 

Kirill

Новичок
забыл добавить - сортировка по RAND() должна быть только когда ищется в режиме boolean - т.к. там тогда релевантность у всех 1.

>Интересно, а почему я не вижу в приведенном тобой запросе сортировки по релевантности?

когда используется полнотекстовый поиск результаты автоматом сортируются по релевантности
 

Фанат

oncle terrible
Команда форума
осмысленность такой сортировки представляется мне весьма сомнительной
 

Kirill

Новичок
в режиме boolean я имел ввиду поиск без указания операторов boolean, т.е. match(field) against('"блондинка"' IN BOOLEAN MODE) - при поиске релевантность получается у всех 1, т.к. попадают только те строки, у которых находится слово блондика.

Поясню - есть что-то типа сайта знакомств и нужно в результатах поиска снача вывести vip пользователей (внутри vip пользователи должны быть отсортированы случайным образом), затем обычные пользователи, также отсортированные случайным образом.
Когда используется полнотекстовый поиск не в режиме булен - тогда только по релевантности.
 
Сверху