Индекс FullText в MySQL используется для полнотекстового поиска в текстовых данных. Он позволяет выполнять поиск по словам и фразам в текстовых полях, таких как
🖊️Основные моменты:
1. Создание индекса:
Чтобы создать полнотекстовый индекс, можно использовать следующий синтаксис:
Либо добавить индекс к существующей таблице:
2. Поиск с использованием MATCH() и AGAINST():
Для выполнения полнотекстового поиска используется оператор
3. Режимы поиска:
MySQL поддерживает несколько режимов поиска:
📍NATURAL LANGUAGE MODE: Поиск по естественному языку.
📍BOOLEAN MODE: Позволяет использовать операторы (например,
📍WITH QUERY EXPANSION: Расширяет запрос, добавляя синонимы и связанные термины.
4. Ограничения:
📍Полнотекстовые индексы могут быть созданы только для таблиц с типом хранения
📍По умолчанию, MySQL игнорирует слова, состоящие менее чем из 4 символов (это значение можно изменить в конфигурации).
📍Стоп-слова (например, "и", "в", "на") также игнорируются.
5. Оптимизация:
Для улучшения производительности полнотекстового поиска можно использовать различные настройки конфигурации MySQL, такие как
🍕Пример использования:
Этот запрос вернет все статьи, содержащие слово "текст" в заголовке или теле статьи.
#mysql
CHAR, VARCHAR и TEXT.🖊️Основные моменты:
1. Создание индекса:
Чтобы создать полнотекстовый индекс, можно использовать следующий синтаксис:
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
body TEXT,
FULLTEXT(title, body)
);
Либо добавить индекс к существующей таблице:
ALTER TABLE articles ADD FULLTEXT(title, body);
2. Поиск с использованием MATCH() и AGAINST():
Для выполнения полнотекстового поиска используется оператор
MATCH() в сочетании с AGAINST(). Например:SELECT * FROM articles
WHERE MATCH(title, body) AGAINST('поиск' IN NATURAL LANGUAGE MODE);
3. Режимы поиска:
MySQL поддерживает несколько режимов поиска:
📍NATURAL LANGUAGE MODE: Поиск по естественному языку.
📍BOOLEAN MODE: Позволяет использовать операторы (например,
+, -, *) для более точного управления поиском.📍WITH QUERY EXPANSION: Расширяет запрос, добавляя синонимы и связанные термины.
4. Ограничения:
📍Полнотекстовые индексы могут быть созданы только для таблиц с типом хранения
MyISAM или InnoDB (начиная с MySQL 5.6).📍По умолчанию, MySQL игнорирует слова, состоящие менее чем из 4 символов (это значение можно изменить в конфигурации).
📍Стоп-слова (например, "и", "в", "на") также игнорируются.
5. Оптимизация:
Для улучшения производительности полнотекстового поиска можно использовать различные настройки конфигурации MySQL, такие как
ft_min_word_len и ft_max_word_len, а также управлять стоп-словами.🍕Пример использования:
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
body TEXT,
FULLTEXT(title, body)
);
INSERT INTO articles (title, body) VALUES
('Первый заголовок', 'Это текст первого статьи.'),
('Второй заголовок', 'Это текст второй статьи.'),
('Третий заголовок', 'Это текст третьей статьи.');
SELECT * FROM articles
WHERE MATCH(title, body) AGAINST('текст' IN NATURAL LANGUAGE MODE);
Этот запрос вернет все статьи, содержащие слово "текст" в заголовке или теле статьи.
#mysql