Выполнение базового полнотекстового поиска
На этом этапе вы выполните базовый полнотекстовый поиск по таблице articles с использованием предложения MATCH AGAINST. Это основной способ использования созданного вами полнотекстового индекса.
Убедитесь, что вы все еще находитесь в оболочке MySQL и используете базу данных search_db. Если нет, выберите базу данных:
USE search_db;
Предложение MATCH AGAINST используется в предложении WHERE оператора SELECT. Базовый синтаксис выглядит следующим образом:
SELECT column1, column2, ...
FROM table_name
WHERE MATCH (column_list) AGAINST ('search_term');
Здесь column_list — это список столбцов, разделенных запятыми, которые включены в полнотекстовый индекс (в нашем случае title и content), а 'search_term' — это слово или фраза, которую вы хотите найти.
Давайте найдем статьи, содержащие слово "MySQL":
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('MySQL');
Этот запрос выбирает столбцы id, title и content из таблицы articles, где столбцы title или content соответствуют термину "MySQL".
Вы должны увидеть следующий вывод:
+----+--------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+--------------------------+---------------------------------------------------------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. |
+----+--------------------------+---------------------------------------------------------------------+
3 rows in set (0.00 sec)
Будут возвращены все три статьи, поскольку все они содержат слово "MySQL".
Полнотекстовый поиск также предоставляет показатель релевантности, указывающий, насколько хорошо каждая строка соответствует поисковому термину. Вы можете включить этот показатель в свой оператор SELECT:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles;
Этот запрос добавляет столбец с именем relevance, который показывает оценку для каждой строки.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
Вы можете отсортировать результаты по релевантности, чтобы сначала увидеть наилучшие совпадения:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles ORDER BY relevance DESC;
Этот запрос сортирует результаты на основе показателя relevance в порядке убывания.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
На этом шаге вы научились выполнять базовый полнотекстовый поиск с помощью MATCH AGAINST и получать и сортировать результаты по релевантности. На следующем шаге вы изучите более продвинутые параметры поиска с использованием булева режима.