E ai pessoas!
Ando meio sumido, visto que assumi alguns projetos grandes de infraestrutura e desenvolvimento que estão me roubando as poucas horas de descanso que utilizo para escrever no blog.
Mas vamos para a segunda parte do artigo dedicado a função CONTAINS! Como vimos no artigo anterior, para recuperar registros de uma tabela que possuem a palavra “azul” em qualquer posição, podemos utilizar da função CONTAINS:
O problema começa quando o que queremos recuperar são as variações de uma determinada palavra, assim temos o recurso do ‘*’ no caso dos sufixos:
Visto que questões de gênero (masculino/feminino) e grau (singular/plural) ainda não são consideradas, se torna necessário o uso de mais um predicado, FORMSOF(INFLECTIONAL …):
Por fim, podemos juntar as duas soluções em uma só:
Para complicar mais sua vida, surge a necessidade de considerar os sinônimos (ou tesauros http://pt.wikipedia.org/wiki/Tesauro)… Bem, você pode criar uma solução própria com uma tabela que relacione todos os sinônimos, ou utilizar o próprio Full-Text Search nisso.
A solução do Full-Text Search faz uso do predicado FORMSOF(THESAURUS…), mas enquanto não é configurado, não se pode esperar muito:
Cada instância do SQL Server possui seu Full-Text Data (ou simplesmente FTData), que possui uma relação de configurações do Full-Text Search para cada idioma no formato XML. Para encontrar estas configurações, siga o seguinte caminho:
C:\Program Files\Microsoft SQL Server\{Instância do SQL Server}\MSSQL\FTData
Conforme o meu cenário:
Nesta pasta, temos as configurações dos tesauros. Sendo tsglobal.xml utilizado por todos os idiomas, tsptb.xml para o idioma “pt-BR” e tsptg.xml para o idioma “pt”.
Para demonstrar como configurar estes arquivos, segue uma situação onde configurei no arquivo tsglobal.xml que “Azul” e “Azulado” são sinônimos e “AZ” é sigla de “Azul”.
Após configurar os arquivos XML, atualize as linguanges do Full-Text Search e identifique o código da linguagem Global (Neutral) e pt-BR (Brazilian)
Com o código da linguagem (lcid), será possível atualizar as configurações de tesauros do SQL Server, com a stored procedure “sp_fulltext_load_thesaurus_file”:
Por fim, executado o predicado de tesauros com a sigla “AZ” temos como resultado registros com a palavra “azul” e com a palavra “azul” temos os registros que possuem as palavras “azul” e “azulado”:
Full-Text Search é um recurso fantástico! Mas ainda não acabou, escreverei mais artigos sobre as funcionalidade do Full-Text Search, aguardem!
Artigos relacionados:
Full-Text Search – Overview:
https://sqlfromhell.wordpress.com/2011/02/10/full-text-search-overview
Full-Text Search – CONTAINS – Parte 1:
https://sqlfromhell.wordpress.com/2011/02/21/full-text-search-contains