Búsqueda de texto completo en MySQL
  • 25 Oct 2022
  • 2 Minutos para leer

Búsqueda de texto completo en MySQL


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 usando MySQL se pueden encontrar en esta página.

Soporte de idioma

MySQL utiliza la recopilación de mayúsculas y minúsculas para la búsqueda de texto completo (FTS) por defecto. 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 es compatible con japoneses y otros idiomas con palabras muy cortas sin espacios en el medio. Habilita la siguiente configuración para obtener un soporte experimental básico de estos idiomas:

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

 Después de cualquiera de estos cambios, vuelva a llenar 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 por defecto 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

Palabras de detención 

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 utilizado 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 espacios en blanco y secuencias de letras particulares. Por lo general, está habilitado por defecto, pero esto puede depender de la distribución. Puede analizar dos o más palabras derivadas de palabras compuestas. Por ejemplo, para la palabra alemana “Fußballweltmeisterschaft”, buscará por palabras como “meister”, “schaft”, etc. Un índice de texto completo hecho sin usar este plugin no podrá dividir la palabra en partes más pequeñas, y el SQL que está tratando de 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 estará limitado 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 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 hacia el final de la lista), por lo que se recomienda que confirmes que el comportamiento de búsqueda se adapta a tus necesidades después de habilitar el soporte de Ngram.

Para activar Ngram, cambia tu configuración config.php de la siguiente manera:

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

A continuación, ejecute:

php admin/cli/fts_rebuild_indexes.php

Esta configuración solo tiene efecto en MySQL.

Búsqueda no acentuada

Por defecto, MySQL es compatible con diacríticos, pero depende de la recopilación y el idioma definido 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 2022 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.