Búsqueda de texto completo en MySQL
  • 26 Apr 2022
  • 2 Minutos para leer

Búsqueda de texto completo en MySQL


Article Summary

La búsqueda de texto completo (FTS) permite un enfoque sofisticado para la búsqueda de texto en Totara, particularmente dentro del catálogo. Los detalles de cómo configurar esto con MySQL se pueden encontrar en esta página.

Apoyo lingüístico

MySQL utiliza la recopilación de mayúsculas y minúsculas y acentos para la búsqueda de texto completo (FTS) de forma predeterminada. Sin embargo, puede especificar una recopilación diferente, por ejemplo:

$CFG->dboptions['ftslanguage'] = 'utf8_unicode_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_0900_as_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_de_pb_0900_ai_ci';

MySQL no admite japonés ni otros idiomas con palabras muy cortas sin espacios intermedios. Habilite la siguiente configuración para obtener un soporte experimental básico de estos idiomas:

$CFG->dboptions['fts3bworkaround'] = true;

 Después de cualquiera de estos cambios, vuelva a completar las tablas FTS y reconstruya los índices ejecutando:

php admin/cli/fts_repopulate_tables.php
 php admin/cli/fts_rebuild_indexes.php

Longitud mínima del término de búsqueda

El límite de caracteres de búsqueda predeterminado de MySQL se puede cambiar editando el archivo de configuración de MySQL:

[mysqld]
 innodb_ft_min_token_size=2
 ft_min_word_len=2

Detener palabras 

Las palabras de detención son un conjunto de palabras que se excluirán de las consultas de índice y búsqueda. Dependen del idioma que se utilice durante la indexación y la búsqueda, así como de la presencia en el diccionario para la instalación de la base de datos. Por ejemplo, si un usuario busca "Hoteles en Wellington", el sistema excluye "en" de la búsqueda.

Puede encontrar más detalles sobre las palabras de detención de MySQL en la documentación de ayuda de MySQL.

Búsqueda morfológica

Ngram es un analizador de texto completo MySQL integrado. Determina el comienzo y el final de las palabras usando un espacio en blanco y secuencias de letras particulares. Por lo general, está habilitado de forma predeterminada, pero esto puede depender de la distribución. Puede analizar dos o más palabras que surgen de palabras compuestas. Por ejemplo, para la palabra alemana “Fußballweltmeisterschaft”, buscará por palabras como “meister”, “schaft”, etc. Un índice de texto completo realizado sin usar este complemento no podrá dividir la palabra en partes más pequeñas, y el SQL que intenta buscar una palabra clave como “meister” no podrá encontrar el registro.

Para algunos idiomas ideográficos (como el ejemplo anterior), el índice normal de texto completo se limitará a lo que puede buscar, ya que no hay delimitadores para esas palabras. Aquí es donde Ngram puede ser útil. Es una secuencia contigua de varios caracteres de una secuencia de texto. La función principal del analizador de texto completo de Ngram es tokenizar una secuencia de texto en una secuencia contigua de N caracteres.

En algunos casos, Ngram puede devolver resultados falsos positivos (aunque tienen una calificación baja y aparecen al final de la lista), por lo que se recomienda que confirme que el comportamiento de búsqueda se adapta a sus necesidades después de habilitar el soporte de Ngram.

Para habilitar Ngram, cambie la configuración de config.php de la siguiente manera:

$CFG->dboptions['ftsngram'] = verdadero;

Luego, ejecute:

php admin/cli/fts_rebuild_indexes.php

Esta configuración solo tiene efecto en MySQL.

Búsqueda sin acento

De manera predeterminada, MySQL admite diacrítica, pero depende de la recopilación y el idioma definidos en $CFG->dboptions['ftslanguage']. Por ejemplo, cuando la recopilación es utf8_general_ci, la consulta de búsqueda que contiene la palabra “första” o “forsta” devolverá un registro que contiene la palabra “första”.

© Copyright 2024 Totara Learning Solutions. All rights reserved. Some content originally obtained via GPLv3 license and continues to be available under GPLv3. All other content is the sole copyright of Totara Learning Solutions. 


¿Te ha sido útil este artículo?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.