У меня есть таблица, упростить, идентификаторы фотографий а также идентификаторы тегов. И недавно я заметил, что когда я использую команду MATCH AGAINST, она не возвращает все подходящие совпадения. Хотя иногда две строки содержат один и тот же текст, который был проверен, но одна из них выбирается, а другая — нет.
Вот таблица под названием фото
id | type | size | tag |
+----------------+------+---------+----------------------------------------------------------------------+
| IMG_1485197299 | jpg | 1400000 | ImgTg_0000000000 |
| IMG_1485429476 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 ImgTg_1485195621 ImgTg_1486234725 |
| IMG_1485429627 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429660 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429669 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429681 | jpg | 0 | ImgTg_1485195592 |
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
| IMG_1485429695 | jpg | 0 | ImgTg_1485195621 ImgTg_1485195510 |
| IMG_1485429704 | jpg | 0 | ImgTg_0000000000 ImgTg_1486234725 |
| IMG_1485429710 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485429718 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485433986 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1485433993 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1486234762 | png | 143306 | ImgTg_1486234725 |
Это команда, которую я использую:
SELECT * FROM photos WHERE MATCH(tag) AGAINST('+ImgTg_1486234725 ' IN BOOLEAN MODE);
и он работает нормально с большей частью таблицы, но по какой-то причине он просто не работает, особенно в последнем ряду. Возвращение:
+----------------+------+------+-------------------+
| id | type | size | tag |
+----------------+------+------+-------------------+
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
+----------------+------+------+-------------------+
НОТА: Если я попытаюсь изменить tag
к другому id
оно работает! Но, некоторые ids
просто не работает
Что я должен делать?
Спасибо всем за попытку помочь
Я пытался разгадать эту загадку со вчерашнего дня, но я только что нашел ошибку, которую сделал после того, как опубликовал вопрос: D
Я использовал какой-то latin
сличение и я изменил его utf8_bin
и теперь работает отлично!
Других решений пока нет …