Я получаю результаты, которые трудно понять. Я надеюсь, что кто-то сможет пролить свет на эту тему.
У меня очень простая таблица в MySQL:
id| text
1 | testA testB testC
2 | testA testB
Когда я запускаю следующий запрос:
SELECT id, MATCH (text) AGAINST ('+(+testA testB) +testC' IN BOOLEAN MODE) as score FROM test_fulltext
Я получаю следующие неправильные результаты (обратите внимание, что вторая строка должна вернуть 0)
id| score
1 | 1,1666667461395
2 | 0,66666668653488
Однако когда я запускаю слегка измененную версию запроса (без знака «+» перед testA):
SELECT id, MATCH (text) AGAINST ('+(testA testB) +testC' IN BOOLEAN MODE) as score FROM test_fulltext
Я получаю правильный результат:
id| score
1 | 1,3333333730698
2 | 0
У вас есть идея, почему первый запрос соответствует второй строке?
Он делает это как на MySQL 4.1, так и на 5.0.5.
Знаете ли вы, где я могу найти исходный код, который анализирует полнотекстовые запросы?
Или любой другой источник информации, который объясняет, как это рассчитывается. Любая помощь приветствуется.