Índice de tabla - índice de texto completo

Tabla de contenido

1. Índice de texto completo

1. Definir el índice al crear la tabla

2. Crear un índice en una tabla existente

Método 1: ejecutar la declaración de creación

Método 2: Ejecute la declaración de modificación de la tabla

3. Escenarios de uso

2. Soporte de segmentación de palabras chinas MySQL8

Resumir


prefacio

        El índice de texto completo crea principalmente un índice basado en segmentos de palabras para el tipo de cadena, principalmente basado en los campos CHAR, VARCHAR y TEXT, de modo que los campos de tipo cadena con una gran cantidad de datos se pueden consultar más rápidamente. .

        El índice de texto completo se basa en palabras, y la segmentación de palabras predeterminada de MySQL es que todos los símbolos especiales que no sean letras y números son separadores de palabras.

        MySQL admite índices de texto completo desde la versión 3.23.23. Anteriormente, MySQL 5.6 solo podía crear índices de texto completo en tablas de datos cuyo motor de almacenamiento era MyISAM. Después de 5.6, InnoDB comenzó a admitir índices de texto completo (y después de 5.7, admite índices de texto completo en chino). De forma predeterminada, el modo de ejecución de búsqueda del índice de texto completo no distingue entre mayúsculas y minúsculas.Si el campo asociado con el índice de texto completo es un tipo de datos binario, el modo de ejecución de búsqueda distingue entre mayúsculas y minúsculas.


1. Índice de texto completo

1. Definir el índice al crear la tabla

CREAR TABLA nombretabla(

    propname1 tipo1,

    propname2 tipo2,

    ……

    tipo de propnamen..n,

    ÍNDICE DE TEXTO COMPLETO | LLAVE

    [indexname] (propname [(longitud)] ) );

mysql> crear escuela de base de datos;   #crear escuela  de base de datos

mysql> usar escuela;   #seleccionar base de datos escuela 

mysql> crear clase de tabla (id int, nombre varchar (128) ÚNICO, profesor varchar (64), comentario varchar (1024), ÍNDICE DE TEXTO COMPLETO index_comm (comentario)); #Crear una clase de tabla y crear un campo de comentario como       un campo completo - índice de texto 

mysql> insertar en valores de clase (1, ' Clase 1 ', 'Martin', '¡ Soy un soldado, de la gente común !');   #Insertar registro 1

mysql> insertar en valores de clase (2, ' Clase 2 ', 'Roca', ' Este maestro de clase se graduó del Departamento de Tang Seng ');    #Insertar registro 2

mysql> insertar en valores de clase (3, ' Clase 3 ', 'Janny', 'Soy la señorita Zhang.');    # Insertar registro

mysql> select * from class where match(comentario) CONTRA(' Soy un soldado '); #Utilice el índice de búsqueda de texto completo para consultar registros rápidamente

2. Crear un índice en una tabla existente

Método 1: ejecutar la declaración de creación

        Además de la sentencia SQL FULLTEXT INDEX para crear un índice de texto completo en MySQL, también se puede implementar mediante la sentencia SQL CREATE FULLTEXT INDEX, y su sintaxis es la siguiente:

    CREAR ÍNDICE DE TEXTO COMPLETO indexname

    ON tablename( propname1 [ ( longitud ) ] );

        En la declaración anterior, la palabra clave CREATE FULLTEXT INDEX se usa para crear un índice de texto completo.

        La siguiente tabla de ejemplo ya existe, puede crear un índice de texto completo a través de la instrucción CREATE:

mysql> crear escuela de base de datos;   #crear escuela  de base de datos

mysql> usar escuela;   #seleccionar base de datos escuela 

mysql> crear clase de tabla (id int, nombre varchar (128) ÚNICO, profesor varchar (64));       #Crear clase de tabla y crearla como índice de campo de identificación 

mysql> crea el índice  FULLTEXT index_teacher en class(teacher) ; 

mysql> show crear clase de tabla;  #Ver definición de tabla  

Método 2: Ejecute la declaración de modificación de la tabla

        Además de las dos formas anteriores de crear un índice de texto completo, también se puede crear un índice de texto completo en MySQL a través de la instrucción SQL ALTER, y su sintaxis es la siguiente:

    ALTER TABLE nombre de tabla

    AGREGAR ÍNDICE DE TEXTO COMPLETO | CLAVE indexname (propname [(longitud)]);

3. Escenarios de uso

Datos de búsqueda de texto completo basados ​​en campos de índice de texto completo:

SELECT * FROM nombre de tabla WHERE MATCH(`nombre de columna`) CONTRA('palabra clave');

mysql> crear escuela de base de datos;   #crear escuela  de base de datos

mysql> usar escuela;   #seleccionar base de datos escuela 

mysql> mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64), info varchar(1024), FULLTEXT INDEX index_des(info)); #Cree una clase de tabla y cree el campo       de información como el índice de texto completo 

mysql> insertar en valores de clase (1, ' Clase 1 ', 'Martin', '¡ Soy un soldado, de la gente común !');   #Insertar registro 1

mysql> insertar en valores de clase (2, ' Clase 2 ', 'Roca', ' Este maestro de clase se graduó del Departamento de Tang Seng ');    #Insertar registro 2

mysql> insertar en valores de clase (3, ' Clase 3 ', 'Janny', 'Soy la señorita Zhang.');    # Insertar registro 3

mysql> select * from class where match(teacher) AGAINST(' Soy un soldado '); #Consultar registros según id

2. Soporte de segmentación de palabras chinas MySQL8

        Agregue los siguientes elementos de configuración al archivo de configuración my.ini (ruta predeterminada de Windows 10: C:\ProgramData\MySQL\MySQL Server 8.0) y reinicie el servicio MySQL80 al mismo tiempo:

[mysqld]
ngram_token_size=2

mysql> crear escuela de base de datos;   #crear escuela  de base de datos

mysql> usar escuela;   #seleccionar base de datos escuela 

mysql> mysql> crear clase de tabla (id int, nombre varchar (128) ÚNICO, maestro varchar (64), comentario varchar (1024), ÍNDICE DE TEXTO COMPLETO index_des (comentario) con analizador ngram); #Crear clase    de       tabla y compilarla como comentario El campo está indexado en texto completo 

mysql> insert into class values(1,'1','Martin','我是一个兵,来自老百姓!');  # 插入记录1

mysql> insert into class values(2,'2','Rock','此班主任毕业自唐僧系');   # 插入记录2

mysql> insert into class values(3,'3','Janny','I''m Miss Zhang.');   #插入记录3

mysql> select * from class where match(comment) AGAINST('百姓');#利用全文检索索引快速查询记录

mysql> select * from class where match(comment) AGAINST('唐僧');#利用全文检索索引快速查询记录


总结

以上

Supongo que te gusta

Origin blog.csdn.net/m0_65635427/article/details/130383578
Recomendado
Clasificación