es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fallo en la búsqueda de texto completo de SQL Server.

Después de cuatro años de trabajar sin errores, nuestras búsquedas de texto completo han estado devolviendo resultados incorrectos. A veces obtenemos menos coincidencias de las esperadas, a veces más. Las búsquedas seguidas de los mismos criterios de búsqueda exactos pueden dar resultados diferentes. Este problema aparece y desaparece en momentos aleatorios. En su mayoría funciona correctamente.

La tabla de texto completo contiene 30,038 entradas y rara vez se actualiza, dos registros por semana serían muchos.

Versión de MSSQL 11.0.7493.4.

Puede probar la búsqueda visitando https://revisor.mo.gov/main/Home.aspx.

Cualquier idea es apreciada.

edición: La consulta para buscar “mule”, que debería devolver 14 coincidencias.

SET NOCOUNT ON; SELECT [BID] FROM [StatConst].[revision].[SectFullText] WHERE CONTAINS (body, ‘”mule”‘) and [hist] Is Null

[StatConst].[revision].[SectFullText] tiene cuatro columnas,

BID int

Body nvarchar(MAX)

hashnum int

hist int

Tags:  ,

Answer

  1. Avatar for davy.ai

    Posibles Causas y Soluciones para Búsquedas de Texto Completo Incorrectas en MSSQL

    Descripción

    Un usuario ha informado que sus búsquedas de texto completo han estado retornando resultados incorrectos, a veces menos o más coincidencias de lo esperado y en ocasiones encontrando resultados diferentes para los mismos criterios de búsqueda. El problema aparece de manera aleatoria, pero la mayoría de las veces funciona correctamente. El problema ha sido encontrado en una tabla de texto completo de 30,038 entradas que raramente es actualizada. La versión de MSSQL que está siendo usada es 11.0.7493.4.

    Posibles Causas

    1. Fragmentación del índice – Los índices de texto completo pueden fragmentarse con el tiempo, lo que puede conducir a búsquedas más lentas o inexactas. El problema puede ser resuelto al reconstruir o reorganizar los índices de texto completo.
    2. Problemas con el separador de palabras – MSSQL utiliza un separador de palabras para dividir el texto en palabras y frases separadas para la indexación y la búsqueda. Si el separador de palabras no está funcionando correctamente o se aplica de manera inconsistente, puede resultar en resultados de búsqueda incorrectos. El problema puede ser resuelto al revisar la configuración del lenguaje y las reglas del separador de palabras, y asegurando que sean consistentes con los datos que se están indexando.

    3. Problemas con palabras de ruido – La búsqueda de texto completo en MSSQL excluye ciertas palabras comunes, conocidas como palabras de ruido, del índice y las consultas, para mejorar el rendimiento y la relevancia. Si una consulta de búsqueda contiene una palabra de ruido, puede retornar resultados incorrectos o ninguna coincidencia en absoluto. El problema puede ser resuelto al modificar la lista de palabras de ruido para el lenguaje que se está utilizando.

    4. Problemas de sintaxis de la consulta – Las consultas de la búsqueda de texto completo en MSSQL pueden ser complejas y depender de la sintaxis y operadores específicos. Si la consulta no está bien formada o incluye errores, puede retornar resultados incorrectos. El problema puede ser resuelto al revisar la sintaxis de la consulta y asegurando que sea correcta y apropiada para los criterios de búsqueda.

    Soluciones

    1. Reconstruir o reorganizar índices de texto completo – Esto puede hacerse utilizando la declaración ALTER FULLTEXT INDEX con las opciones REORGANIZE o REBUILD. Reorganizar un índice de texto completo es una operación ligera que desfragmenta el índice, mientras que reconstruirlo es más demorado y recrea todo el índice. La elección entre las dos opciones depende de la severidad de la fragmentación y el tiempo de inactividad que se pueda tolerar.

    2. Revisar y modificar las reglas del separador de palabras – Esto puede ser hecho utilizando la vista del catálogo sys.fulltext_languages, que muestra los lenguajes disponibles y sus componentes del separador de palabras y del algoritmo de raíces. Los componentes del separador de palabras y del algoritmo de raíces pueden ser modificados o reemplazados según sea necesario. También es importante revisar si el texto que se está indexando contiene caracteres especiales o símbolos que puedan afectar el separador de palabras.

    3. Modificar la lista de palabras de ruido – Esto puede ser hecho utilizando la vista del catálogo sys.fulltext_system_stopwords, que muestra las palabras de ruido predefinidas y el lenguaje correspondiente. Se pueden agregar nuevas palabras de ruido o eliminar las existentes según sea necesario. También es importante revisar si el texto que se está buscando contiene palabras o frases de ruido que puedan ser relevantes para la consulta.

    4. Revisar y corregir la sintaxis de la consulta – Esto puede ser hecho analizando la estructura y sintaxis de la consulta, y comparándola con los operadores y opciones disponibles para la búsqueda de texto completo en MSSQL. También es importante asegurarse de que la consulta sea apropiada para los criterios de búsqueda y de que solo incluya los términos y frases necesarios.

    Conclusión

    Los resultados de búsqueda de texto completo incorrectos en MSSQL pueden tener varias causas posibles, desde la fragmentación del índice y problemas con el separador de palabras hasta problemas con las palabras de ruido y la sintaxis de la consulta. La solución específica depende de la causa y la severidad del problema, y puede requerir modificaciones en los índices, la configuración del lenguaje o la estructura de la consulta. También es importante monitorear los resultados de búsqueda para precisión y consistencia, y realizar tareas de mantenimiento según sea necesario para asegurar un rendimiento óptimo.

Comments are closed.