FullText não encontra uma palavra específica

Eu montei um índice FullText para uma tabela de um cliente, com estas colunas:

  • Chassi - varchar(30)

  • chassi do veículo

  • Motor - varchar(20)

  • código do motor com até 17 caracteres

  • Combustivel - varchar(20)

  • Alcool

  • Gasolina

  • Alcool / Gasolina

  • Diesel

  • DescricaoServico - varchar(max)

  • tudo o que seria feito no veículo

  • StatusServico - varchar(20)

  • Aprovado

  • Cancelado

  • Reprovado

  • Aprovado com restrições

  • Conforme (usado quando o serviço é preparação do veículo para vistorias)

O objetivo da consulta era identificar um atendimento, considerando uma ou mais das cinco colunas acima. A consulta original usava LIKE '%' + @variavel + '%' para todas as colunas, porque a pesquisa poderia ser, por exemplo, por uma parte do código do motor, para localizar todos os serviços daquele tipo específico de motor.

Depois de várias opções, sugeri o uso de FullText:

Ajustamos as consultas e começamos os testes. Tudo estava indo muito bem, as consultas que levavam pelo menos 25 segundos, começaram a retornar em 0 segundo. Só que aí surgiu um problema, as consultas do StatusServico = 'CONFORME' não retornava os registros.

Se a cláusula fosse WHERE StatusServico = 'CONFORME', os registros eram encontrados.

Se a cláusula fosse WHERE CONTAINS(StatusServico, 'CONFORME'), nenhum registro era encontrado!

Depois de quebrar a cabeça, me lembrei que o FullText ignora algumas palavras, com artigos, conjunções e preposições. Segundo o dicionário, CONFORME pode ser um adjetivo, conjunção ou preposição, dependendo do uso na frase. Como eu criei o índice com o idioma "Brazilian", a palavra CONFORME foi desconsiderada.

Para resolver esta situação rapidamente, eu optei por alterar o idioma da coluna StatusServico no FullText para inglês. Assim, a palavra CONFORME deixou de ser considerada uma preposição, e o FullText encontrou os registros que eu queria.

Esta solução atendeu especificamente essa tabela desse cliente. É importante analisar cuidadosamente o uso do FullText em seu ambiente, para garantir que a troca do idioma não vai atrapalhar outras consultas. E como o idioma é definido por coluna, a pesquisa pela descrição do serviço não foi afetada.

Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags