Pregunta

Actualmente estoy usando la ironía como parte de mi proceso de búsqueda (no es mi elección y no tengo una opinión: P) y hay un problema con el uso de la combinación de letras "o" seguido de un espacio y otra palabra, Es decir, "chicle orbit" Sin embargo, si busca cosas como "órbita" o simplemente "o" por sí solo, parece funcionar positivamente.

El error que ocurre es

Syntax error near 'gum' in the full-text search condition 'orbit gum'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Syntax error near 'gum' in the full-text search condition 'orbit gum'.

El código que se está utilizando para generar esta parte de ella es

        //Union with the full text search
        if (!string.IsNullOrEmpty(fTextSearch))
            {
                sql.AppendLine("UNION");
                sql.AppendLine(commonClause);
                sql.AppendLine(string.Format("AND CONTAINS(nt.text, '{0}', LANGUAGE 'English')", fTextSearch));
            }

La consulta real que está causando el problema que puedo ver es esta línea:

AND CONTAINS(nt.text, 'orbit gum', LANGUAGE 'English')

¿Fue útil?

Solución

He encontrado la solución a esto yo mismo usando un simple bit de REGEX, resulta que puede simplemente agregar comillas en el principio y el final de la cadena y se detiene a tirar el error.

 fTextSearch = Regex.Replace(fTextSearch, ".*(or|and|etc).*", "\"$&\"");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top