- 09 Feb 2024
- 2 Minutos para leer
Búsqueda de texto completo en MySQL
- Actualizado en 09 Feb 2024
- 2 Minutos para leer
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.
admitir más de 20 idiomas.
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 entre ellos. Habilita 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 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'] = true;
Próxima ejecución
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 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.