MySQL Full-Text Indexes

Além de permitir a utilização de índice em busca por texto sem a necessidade do LIKE ‘%%’, os índices Full-Text permitem uma flexibilidade maior de consultas, como demonstrado nos exemplos abaixo.

mysql> CREATE TABLE t1 (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, name TEXT(500), FULLTEXT t1_idx_name(name));
Query OK, 0 rows affected (1,35 sec)

mysql> INSERT INTO t1 (name) VALUES ('Ricardo Portilho Proni');
Query OK, 1 row affected (0,00 sec)

mysql> INSERT INTO t1 (name) VALUES ('Luiza Victoria Erdei Habeite');
Query OK, 1 row affected (0,01 sec)

mysql> INSERT INTO t1 (name) VALUES ('Julio Cezar Erdei de Oliveira Borges');
Query OK, 1 row affected (0,01 sec)

mysql> INSERT INTO t1 (name) VALUES ('Agatha Regina Habeite Portilho Proni');
Query OK, 1 row affected (0,00 sec)

mysql> SELECT id, name FROM t1 WHERE MATCH (name) AGAINST ('portilho' IN NATURAL LANGUAGE MODE);
+----+--------------------------------------+
| id | name                                 |
+----+--------------------------------------+
| 13 | Ricardo Portilho Proni               |
| 16 | Agatha Regina Habeite Portilho Proni |
+----+--------------------------------------+
2 rows in set (0,00 sec)

mysql> SELECT id, name FROM t1 WHERE MATCH (name) AGAINST ('erdei' IN NATURAL LANGUAGE MODE);
+----+--------------------------------------+
| id | name                                 |
+----+--------------------------------------+
| 14 | Luiza Victoria Erdei Habeite         |
| 15 | Julio Cezar Erdei de Oliveira Borges |
+----+--------------------------------------+
2 rows in set (0,01 sec)

mysql> SELECT id, name FROM t1 WHERE MATCH (name) AGAINST ('+Portilho -Habeite' IN BOOLEAN MODE);
+----+------------------------+
| id | name                   |
+----+------------------------+
| 13 | Ricardo Portilho Proni |
+----+------------------------+
1 row in set (0,01 sec)

mysql> SELECT id, name FROM t1 WHERE MATCH (name) AGAINST ('+Portilho +Habeite' IN BOOLEAN MODE);
+----+--------------------------------------+
| id | name                                 |
+----+--------------------------------------+
| 16 | Agatha Regina Habeite Portilho Proni |
+----+--------------------------------------+
1 row in set (0,01 sec)

mysql>

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.