Cómo agregar un índice de texto completo a MySql
La indexación de texto completo (también conocida como búsqueda de texto completo) es una tecnología clave utilizada por los motores de búsqueda. Puede utilizar algoritmos como la "tecnología de palabras" para analizar de forma inteligente la frecuencia y la importancia de las palabras clave en el texto y luego filtrar de forma inteligente los resultados de búsqueda que queremos de acuerdo con ciertas reglas de algoritmo. En lugar de seguir aquí los fundamentos de la implementación, ahora veremos cómo crear y utilizar índices de texto completo en MySQL.
Crear un índice de texto completo en MySQL es relativamente sencillo. Por ejemplo, tenemos una tabla de artículos (artículo), que tiene tres campos: ID de clave principal (id), título del artículo (title) y contenido del artículo (content). Ahora queremos poder crear un índice de texto completo en las columnas de título y contenido. La instrucción SQL para crear la tabla de artículos y el índice de texto completo es la siguiente:
--CREATE ARTICLE TABLE
CREATE TABLE artículo (
id INT UNSIGNED AUTO_ INCREMENT NOT NULL PRIMARY KEY ,
title VARCHAR(200),
content TEXT,
FULLTEXT (título, contenido) -- Crea un texto completo index en las columnas de título y contenido
>);
Lo anterior es un ejemplo de SQL para crear un índice de texto completo al crear una tabla. Además, si queremos crear un índice de texto completo en un campo específico de una tabla existente, tomando la tabla de artículos como ejemplo, podemos usar la siguiente instrucción SQL para completar:
--En el título y crear un índice de texto completo en el campo de contenido
--El nombre del índice es artículo_texto completo
ALTER TABLE artículo
AGREGAR ÍNDICE DE TEXTO COMPLETO artículo_texto completo ( título, contenido)
Después de crear un índice de texto completo en MySQL, es hora de aprender a utilizar el índice. Todos sabemos que las consultas difusas en la base de datos se realizan utilizando la palabra clave LIKE, por ejemplo:
SELECT * FROM artículo WHERE contenido LIKE 'cadena de consulta'
Entonces, así es como Úselo ¿Texto completo indexado? Por supuesto que no, tenemos que usar una sintaxis específica para realizar consultas usando el índice de texto completo. Por ejemplo, si queremos recuperar el texto completo de la cadena de consulta especificada en las columnas de título y contenido de la tabla de artículos, podemos escribir la siguiente instrucción SQL:
SELECT * FROM artículo WHERE MATCH(título, content) AGAINST('query string' )
Muy recomendado: el índice de texto completo que viene con MySQL solo se puede usar para tablas de datos cuyo motor de base de datos sea MyISAM. Si se trata de otros motores de datos, el completo. -El índice de texto no tendrá efecto. Además, el índice de texto completo de MySQL solo se puede utilizar para recuperar texto completo en inglés y no para recuperar texto completo en chino. Si necesitamos recuperar datos de texto, incluido el chino, debemos utilizar la tecnología Sphinx/Coreseek para procesar el chino. Presentaremos Sphinx y Coreseek en los siguientes artículos.
Nota 1: Actualmente, cuando utiliza el índice de texto completo propio de MySQL, no obtendrá los resultados de búsqueda deseados si la cadena de consulta es demasiado corta. Además, si la cadena de consulta contiene palabras vacías, se ignorarán.
Nota 2: Si es posible, intente crear un índice de texto completo después de crear la tabla e insertar todos los datos, en lugar de crear un índice de texto completo directamente al crear la tabla, porque el primero es más eficiente que el último índice de texto completo.