14.9.5 Ограничения полнотекстового поиска
Полнотекстовый поиск поддерживается только для таблиц
InnoDBиMyISAM.Полнотекстовый поиск не поддерживается для разделяемых таблиц. См. Раздел 26.6, «Ограничения и пределы разбиения».
-
Полнотекстовый поиск может использоваться с большинством многобайтовых наборов символов. Исключением являются наборы символов Unicode, для которых можно использовать
utf8mb3илиutf8mb4, но неucs2. Хотя индексыFULLTEXTпо столбцамucs2использовать нельзя, вы можете выполнять полнотекстовые запросы по столбцуucs2, не имеющему такого индекса.Примечания к
utf8mb3также относятся кutf8mb4, а замечания кucs2также относятся кutf16,utf16leиutf32. -
Идеографические языки, такие как китайский и японский, не имеют разделителей слов. Поэтому встроенный полнотекстовый анализатор не может определить, где в этих и других подобных языках начинаются и заканчиваются слова.
Для использования с таблицами
InnoDBиMyISAMпредоставляется полнотекстовый анализатор n-грамм на основе символов, поддерживающий китайский, японский и корейский (CJK), а также плагин анализатора MeCab на основе слов, поддерживающий японский. Хотя использование нескольких наборов символов в одной таблице поддерживается, все столбцы в индексе
FULLTEXTдолжны использовать один и тот же набор символов и сортировку.Список столбцов в
MATCH()должен точно соответствовать списку столбцов в определении индексаFULLTEXTдля таблицы, если этотMATCH()не применяется кMyISAMтаблице. ДляMyISAMтаблиц поиски в булевом режиме могут выполняться по неиндексированным столбцам, хотя они, вероятно, будут медленными.-
Аргумент для
AGAINST()должен быть строковым значением, постоянным во время оценки запроса. Это исключает, например, столбец таблицы, так как он может отличаться для каждой строки.Аргумент для
MATCH()не может использовать агрегирующий столбец. Подсказки индекса ограничены для полнотекстовых запросов по сравнению с обычными запросами. См. Раздел 10.9.4, «Подсказки индекса».
Для
InnoDBвсе операции DML (INSERT,UPDATE,DELETE), затрагивающие столбцы с полнотекстовыми индексами, обрабатываются во время фиксации транзакции. Например, для операцииINSERTвставленная строка разлагается на отдельные слова. Отдельные слова добавляются в таблицы полнотекстового индекса при фиксации транзакции. В результате полнотекстовые поиски возвращают только данные, подтверждённые транзакцией.Символ '%' не поддерживается в качестве символа подстановки для полнотекстовых запросов.
© 2025 Oracle
Licensed under the GPLv2 License.