Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: SQL > Полнотекстовый поиск match against не хочет работать полноценно |
Автор: alex.styopin 27.06.18, 13:37 |
Добрый день. Есть поле в таблице: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> c_number CHAR (20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL Для него создан индекс FULLTEXT. Делаю поиск по нему поиск. Текст в нем латиницей. Если делаю поиск с начала строки, то есть если запрос такой: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> WHERE MATCH (c_number) AGAINST ('ABCD*' IN BOOLEAN MODE) То отдает правильную выборку. Но если поиск не с начала строки: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> WHERE MATCH (c_number) AGAINST ('*BCD*' IN BOOLEAN MODE) То отдает пустую выборку. Текущий движок таблицы INNODB, читал, что на нем может не работать, менял на MYISAM, результат тот же. Версия mysql 5.7. В чем может быть проблема? Уже кучу всего перепробовал, ничего не помогает. |
Автор: Gonarh 27.06.18, 14:18 |
WHERE c_number LIKE '%BCD%' |
Автор: alex.styopin 02.07.18, 05:00 |
Gonarh LIKE не для FULLTEXT, а для BETREE. Плюс, если с помощью LIKE делать выборку не с начала строки, то он не использует индексы и поиск занимает очень много времени. |
Автор: alex.styopin 02.07.18, 06:38 |
Gonarh Беру свои слова обратно) Хоть и это и перечет документации, но на таблице под движком InnoDB, с индексом FULLTEXT, для поля CHAR, LIKE '%ABC%' работает на ура! |