Вы можете создать вторую таблицу, используя MyISAM, которая содержит только первичный ключ основной таблицы и текстовое содержимое, которое вы хотите FULLTEXT
найти.Затем, когда вы хотите выполнить полнотекстовый поиск, вы делаете JOIN
между соответствующей таблицей InnoDB и таблицей MyISAM с поисковой приманкой, с условием MATCH
для таблицы MyISAM.
Это также позволяетВы должны хранить различный текст поисковой приманки в таблице MyISAM по сравнению с «реальным» текстом в таблице InnoDB, что позволяет реализовывать такие функции, как использование стволов или специальная обработка апострофов / дефисов, которыми не может управлять движок FULLTEXT
MySQL.
Проблема здесь, конечно, заключается в том, чтобы данные MyISAM соответствовали данным InnoDB.Вы можете запускать задание время от времени, чтобы выполнить его, или заставить приложение записывать в обе таблицы каждый раз, когда происходит обновление текста.В любом случае, мы надеемся, что вы можете избежать несогласованности в полнотекстовом поиске, где это было бы неприемлемо для «канонических» табличных данных.
Другой подход - просто вернуться к LIKE
/ RLIKE
(regexp) соответствие, когда нужное вам полнотекстовое решение недоступно.Будет неиндексированным, поэтому не быстро, но, по крайней мере, он всегда будет работать, и это хорошо для небольших баз данных.
Редактировать:
таблица, по которой я хочу выполнить поиск, содержитсписок инструментов, которые существуют в лаборатории, для которой я создаю веб-приложение
ОК, действительно ли это должно быть FULLTEXT
для поиска?Разве не было бы лучше смоделировать такой список как одну сущность для каждого типа оборудования и таблицу соединений между лабораториями и оборудованием (или чем-то еще)?
, так что если 2 вставки произойдут нав то же время?
MyISAM не позволит двум INSERT
запрашивать один и тот же первичный ключ.Но этого недостаточно, чтобы гарантировать «последовательность» в общем случае.Хотя это звучит так, как будто вы можете сойти с рук с практической точки зрения, если существует явное требование «согласованности», это, вероятно, именно то, что они не хотят, чтобы вы делали.