Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка по релевантности

Сообщения:  [1-10]   [11-16] 

 
 автор: cheops   (16.03.2006 в 01:06)   письмо автору
 
   для: Loki   (16.03.2006 в 00:03)
 

Хм... надо будет подумать в этом направлении, поэкспериментировать на большой базе... в принципе полнотекстовый поиск себя хорошо проявляет на больших объёмах текста...

   
 
 автор: Loki   (16.03.2006 в 00:03)   письмо автору
 
   для: cheops   (15.03.2006 в 21:46)
 

Версия 4,1,8
попробовал запрос с двумя словами: все равно нормальные коэффициенты...

   
 
 автор: cheops   (15.03.2006 в 21:46)   письмо автору
 
   для: Loki   (15.03.2006 в 15:38)
 

Вряд ли, так 5 версия уже пару месяцев как объявлена релизом, а 5.1 уже в бета-тестировании (это значит до релиза уже где-то пол года), кроме того у меня и на 4.0 воспроизводится... нужно будет попробовать одно слово использовать, может он когда одно слово коэффициенты нормально выставляет...

   
 
 автор: Loki   (15.03.2006 в 15:38)   письмо автору
 
   для: cheops   (15.03.2006 в 15:31)
 

Тестировал на четвертой версии - были вполне адекватные индексы... очень старнно. Может пятая все же сыровата?

   
 
 автор: cheops   (15.03.2006 в 15:31)   письмо автору
 
   для: Loki   (15.03.2006 в 13:44)
 

Да я понял, что вы ходите сказать. Я лишь хочу подчеркнуть, что конструкция MATCH(name, msg) AGAINST('сайт') DESC вычисляется лишь один раз, а при использовании логического режима коэффициенты релевантности оболванены, т.е. использовать релевантность всё равно придётся от естественного поиска.

   
 
 автор: Loki   (15.03.2006 в 13:44)   письмо автору
 
   для: cheops   (15.03.2006 в 12:49)
 

Мне кажется вы не совсем правильно трактуете значение релевантности:
Релевантностью обладает абсолютно любая запись, даже в том случае, если релевантность нулевая. И чтобы расположить результаты поиска в порядке релевантности, совсем не обязательно производить поиск по релевантности.
То есть вполне нормальна следующая запись:

SELECT msg  FROM 'boardp' WHERE user_id=1 ORDER BY MATCH(name, msg) AGAINST('сайт') DESC 

То есть в условии WHERE вообще не используется полнотекстовый поиск, но тем не менее, результаты сортируются по релевантности, которой, обладают абсолютно все записи.

Слово "сайт" было взято просто для примера, так как тестировал на маленькой базе форума.

   
 
 автор: cheops   (15.03.2006 в 12:49)   письмо автору
 
   для: Loki   (15.03.2006 в 09:23)
 

У меня 5.0.3. Кроме того, мне кажется не каждому boolean запросу можно в соответствие поставить естественный - слово сайт не очень удобное, так как полное, попробуйте 'сайту' искать по запросу 'сайт*' - как себя MySQL ведёт, так же? У меня упорно округляет коэффициенты.

   
 
 автор: Loki   (15.03.2006 в 09:23)   письмо автору
 
   для: cheops   (15.03.2006 в 00:25)
 

Хм... а что у вас за версия? У меня веса отображаются именно по первому варианту.
Вы ничего не напутали? выборка-то идет в логическом режиме, а вот коэффициенты для сортировки - в естественном.

   
 
 автор: untitled   (15.03.2006 в 02:17)   письмо автору
 
   для: untitled   (14.03.2006 в 21:42)
 

Т.е. задача обратная обычному поиску, обычно требуется найти наиболее релевантные тексты по ключевому слову.
А здесь наоборот нужно найти наиболее релевантные ключевые слова.

   
 
 автор: cheops   (15.03.2006 в 00:25)   письмо автору
 
   для: Loki   (15.03.2006 в 00:05)
 

Хм... всё-равно коэффициенты более примитивные получаются. В естественном режиме получается чего-то вроде
2.59818860148 
2.5506679303087 
2.5506679303087 
1.916105243405 
1.916105243405 
1.9100009371636 
0.37929384084749 
0.34001389614631 
0.34001389614631 
0.34001389614631 
0.34001389614631 
0.34001389614631 
0.33673688991751 
0.30018858529919 
0.30018858529919 
0.30018858529919 
0.30018858529919 
0.30018858529919 

А в логическом режиме (с учётом приведённых ухищрений)


















Он, собака, конструкцию MATCH(name, msg) AGAINST('сайт') только один раз за запрос вычисляет и на вторую не обращает внимания - т.е. либо сортировка будет по коэффициентам логического режима (т.е. никакая)... либо это будет не логический режим. В логическом режиме больно лихо коэффициент округляются, в результате сортировки в начало могут попадать записи, которые при естественной сортировке были бы в середине выборки.

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования