Pergunta

Atualmente estou usando o Irony como parte do meu processo de pesquisa (não é minha escolha e não tenho uma palavra a dizer: P) e há um problema ao usar a combinação de letras "ou" seguida de um espaço e outra palavra, I.E " Orbit Gum", no entanto, se você pesquisar coisas como "órbita" ou simplesmente "ou" por si só, parece funcionar positivamente.

O erro que ocorre é

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'.

O código que está sendo usado para gerar esta parte é

        //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));
            }

A consulta real que está causando o problema, pelo que posso ver, é esta linha:

AND CONTAINS(nt.text, 'orbit gum', LANGUAGE 'English')
Foi útil?

Solução

Eu mesmo encontrei a solução para isso usando um simples pouco de Regex. Acontece que você pode simplesmente adicionar aspas no início e no final da string e isso impede que o erro seja gerado.

 fTextSearch = Regex.Replace(fTextSearch, ".*(or|and|etc).*", "\"$&\"");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top