SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.09.2010 18:56:08

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

IN BOOLEAN MODE - управление релевантностью слов.

Здравствуйте. При отправке запроса


select text, MATCH(`text`) AGAINST ('(javascript >java*)' IN BOOLEAN MODE) as coeff from `text_index`
where MATCH(`text`) AGAINST ('(javascript >java*)' IN BOOLEAN MODE);


получаю результат
------------------------------------
coeff   text
1.5     Полный java       
2.5     Курс javascript   
2.5     javascript освой   
1.5     java программирование
------------------------------------
Если верить книге то там всё автоматом сортироваться должно.
Это конечно можно исправить добавив order by coeff desc но хотелось бы отправлять такой запрос
select text from `text_index` where MATCH(`text`) AGAINST ('(javascript >java*)' IN BOOLEAN MODE);

Ещё в этой книге было сказано что без <> коэффициент релевантности одинаковый у всех записей.

Отредактированно Марк (09.09.2010 19:16:04)

Неактивен

 

#2 09.09.2010 19:45:09

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: IN BOOLEAN MODE - управление релевантностью слов.

Казалось можно сделать так


select text, MATCH(`text`) AGAINST ('(javascript >java*)' IN BOOLEAN MODE) as coeff from `text_index` order by coeff limit 10;


но почему то запрос долго выполняется.

Неактивен

 

#3 11.09.2010 14:19:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: IN BOOLEAN MODE - управление релевантностью слов.

Полнотекстовые запросы в двоичном режиме действительно не сортируют результат
так же, как обычные полнотекстовые запросы. С другой стороны, в двоичном режиме
обычно ищут тогда, когда необходимо вывести все результаты, а не только top 10.

При сортировке больших выборок стандартное решение — выбирать только id строк,
сортировать их в памяти (ORDER BY coeff), а потом уже присоединять сами строки.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson