|
|
|
|
|
для: Loki
(16.03.2006 в 00:03)
| | Хм... надо будет подумать в этом направлении, поэкспериментировать на большой базе... в принципе полнотекстовый поиск себя хорошо проявляет на больших объёмах текста... | |
|
|
|
|
|
|
|
для: cheops
(15.03.2006 в 21:46)
| | Версия 4,1,8
попробовал запрос с двумя словами: все равно нормальные коэффициенты... | |
|
|
|
|
|
|
|
для: Loki
(15.03.2006 в 15:38)
| | Вряд ли, так 5 версия уже пару месяцев как объявлена релизом, а 5.1 уже в бета-тестировании (это значит до релиза уже где-то пол года), кроме того у меня и на 4.0 воспроизводится... нужно будет попробовать одно слово использовать, может он когда одно слово коэффициенты нормально выставляет... | |
|
|
|
|
|
|
|
для: cheops
(15.03.2006 в 15:31)
| | Тестировал на четвертой версии - были вполне адекватные индексы... очень старнно. Может пятая все же сыровата? | |
|
|
|
|
|
|
|
для: Loki
(15.03.2006 в 13:44)
| | Да я понял, что вы ходите сказать. Я лишь хочу подчеркнуть, что конструкция MATCH(name, msg) AGAINST('сайт') DESC вычисляется лишь один раз, а при использовании логического режима коэффициенты релевантности оболванены, т.е. использовать релевантность всё равно придётся от естественного поиска. | |
|
|
|
|
|
|
|
для: cheops
(15.03.2006 в 12:49)
| | Мне кажется вы не совсем правильно трактуете значение релевантности:
Релевантностью обладает абсолютно любая запись, даже в том случае, если релевантность нулевая. И чтобы расположить результаты поиска в порядке релевантности, совсем не обязательно производить поиск по релевантности.
То есть вполне нормальна следующая запись:
SELECT msg FROM 'boardp' WHERE user_id=1 ORDER BY MATCH(name, msg) AGAINST('сайт') DESC
|
То есть в условии WHERE вообще не используется полнотекстовый поиск, но тем не менее, результаты сортируются по релевантности, которой, обладают абсолютно все записи.
Слово "сайт" было взято просто для примера, так как тестировал на маленькой базе форума. | |
|
|
|
|
|
|
|
для: Loki
(15.03.2006 в 09:23)
| | У меня 5.0.3. Кроме того, мне кажется не каждому boolean запросу можно в соответствие поставить естественный - слово сайт не очень удобное, так как полное, попробуйте 'сайту' искать по запросу 'сайт*' - как себя MySQL ведёт, так же? У меня упорно округляет коэффициенты. | |
|
|
|
|
|
|
|
для: cheops
(15.03.2006 в 00:25)
| | Хм... а что у вас за версия? У меня веса отображаются именно по первому варианту.
Вы ничего не напутали? выборка-то идет в логическом режиме, а вот коэффициенты для сортировки - в естественном. | |
|
|
|
|
|
|
|
для: untitled
(14.03.2006 в 21:42)
| | Т.е. задача обратная обычному поиску, обычно требуется найти наиболее релевантные тексты по ключевому слову.
А здесь наоборот нужно найти наиболее релевантные ключевые слова. | |
|
|
|
|
|
|
|
для: 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
|
А в логическом режиме (с учётом приведённых ухищрений)
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
|
Он, собака, конструкцию MATCH(name, msg) AGAINST('сайт') только один раз за запрос вычисляет и на вторую не обращает внимания - т.е. либо сортировка будет по коэффициентам логического режима (т.е. никакая)... либо это будет не логический режим. В логическом режиме больно лихо коэффициент округляются, в результате сортировки в начало могут попадать записи, которые при естественной сортировке были бы в середине выборки. | |
|
|
|
|