Поставьте +
перед каждым словом:
AGAINST('+qf* +episodic +sg_1001* +JPG' in boolean mode)
У вас установлена минимальная длина слова 2? Если нет, то могут быть и другие проблемы.
+
избегает "слишком много".
Подумайте о переключении на InnoDB, теперь, когда он имеет FULLTEXT
.
Возможно, вам придется отказаться от использования FULLTEXT и переключиться на LIKE
:
WHERE path LIKE '%qf%episodic%sg_1001%JPG%'
Если производительность является проблемой, рассмотрите что-то вроде
WHERE MATCH(path) AGAINST('...' IN BOOLEAN MODE) -- using some of the words
AND path LIKE '...' -- as above
Сначала будет запускаться MATCH
, значительно сокращая количество возможных строк, затем LIKE
заботится о деталях.
Обратите внимание, что середины слов нельзя использовать в AGAINST
. Они могут быть опущены, полагаясь на LIKE
, чтобы заботиться о них.