Use Funções Nativas do Oracle Aplicadas no Delphi - Revista ClubeDelphi Magazine 151
Neste artigo abordaremos com exemplos práticos e teóricos como utilizar a função nativa do Oracle chamada JARO_WINKLER_SIMILARITY e saber mais detalhes sobre o pacote UTL_MATCH e suas funções, aplicando posteriormente estes conhecimentos no Delphi.
Recursos especiais neste artigo:
Contém nota Quickupdate.
É muito comum utilizarmos o “like” quando precisamos realizar uma busca para resgatar dados, porém, o uso do mesmo nem sempre atende as necessidades, pois não levam em consideração possíveis erros de entrada de dados, ou seja, “erros humanos”. Neste artigo abordaremos com exemplos práticos e teóricos como utilizar a função nativa do Oracle chamada JARO_WINKLER_SIMILARITY e saber mais detalhes sobre o pacote UTL_MATCH e suas funções, aplicando posteriormente estes conhecimentos no Delphi.
Em que situação o tema é útil
Quando for necessário efetuar uma pesquisa textual, seja
essa por um possível campo “Nome” ou qualquer outro que aceite texto livre, que
requer um resultado não exato, ou seja, que deva retornar valores similares ao
informado para a busca.
Hoje em dia o nível de complexidade das informações armazenadas no SGBD é cada vez maior, havendo assim uma necessidade crescente em encontrar novos meios de consulta. Um dos mais empregados atualmente, principalmente em projetos para web, são as buscas por similaridade. A necessidade em encontrar novos meios de consulta se deve à grande quantidade de inconsistências causadas por erros ortográficos, abreviações, caracteres trocados, siglas entre outros. Isto faz com que um mesmo objeto seja representado de várias formas, o que dificulta a busca deste pelos meios tradicionais.
Utilizando esta técnica de maneira apropriada é possível obter resultados satisfatórios, mesmo tendo pouco ou nenhum conhecimento do conteúdo armazenado. É comum a ocorrência de dados inconsistentes principalmente quando o mesmo é digitado ou quando o sistema é integrado, seja este representado como um endereço salvo com abreviações e erros ortográficos ou quando se quer resgatar dados do SGBD. Nestes casos um operador tradicional de busca não consegue recuperar os dados devido à variação existente, já que o mesmo utiliza a comparação por igualdade. Logo este problema não fica restrito somente a endereços, mas também aos mais variados casos.
Por exemplo, numa consulta para localizar um endereço cadastrado como “Avenida Presidente Vargas”. O mesmo pode conter diversas variações como “Av. Presidente Vargas” ou “Av. Pres. Vargas”, note que todas as variações se referem ao mesmo elemento. Numa consulta tradicional se utilizássemos qualquer destas variações o endereço retornaria vazio.
Temos também vários exemplos na web de sites que utilizam o conceito de busca por similaridade. O Google é um exemplo. Basta reparar que quando é digitado algum termo, mesmo que errado, automaticamente é exibida uma sugestão para o termo, onde muitas vezes é o termo escrito de forma correta e corrigida. Além do Google temos vários outros exemplos na web. Como buscas realizadas em sites de vendas para localizar algum produto. Podemos aplicar este conceito de busca no Delphi, tornando assim as consultas mais “inteligentes”, servindo assim como um diferencial na aplicação e facilitador para o usuário. Nesse artigo utilizamos um recurso nativo do Oracle, o pacote UTL_MATCH.
Já com o operador “like”, podemoscompararcadeias de caracteres utilizando padrões de comparação(SQL WildCard) para um ou mais caracteres, contudo, a pesquisa fica restrita a digitação correta.
Nota: WildCard é um operador coringa, que utiliza padrões de comparação usados no SQL para realizar uma busca seletiva. Este é representado por caracteres como: “%” (substitui nenhum ou mais caracteres), “_” (substitui um caractere).
Esse pacote foi introduzido no Oracle 10g Release 2, mas como foi documentado posteriormente, é dito que foi oficialmente suportado somente no Oracle 11g Release 2. Contém uma variedade de funções que são úteis para testar o nível de semelhança/diferença entre cadeias de texto.
Abordamos um pouco sobre cada uma dessas funções, dando mais ênfase à função JARO_WINKLER_SIMILARITY e sua implementação no Delphi.
Introdução ao pacote UTL_MATCH
Neste pacote há quatro funções que utilizam métodos diferentes para comparar a cadeia de caracteres de origem e destino. Estes retornam uma avaliação do que seria necessário para transformar este determinado conteúdo de origem em destino. As funções são separadas em duas categorias, EDIT_DISTANCE e JARO_WINKLER, que possuem diferentes algoritmos de análise ("
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo