Pular para o conteúdo principal
O vsql_trgm é um port do pg_trgm do PostgreSQL. Ele divide uma string em pedaços de três caracteres e pontua duas strings por quantos pedaços elas compartilham, de modo que um termo de busca com erro de grafia ainda encontra a sua linha. Use-o quando o LIKE é estrito demais e a busca de texto completo é grosseira demais.

Instalar

O vsql_trgm.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

Ela adiciona três famílias de função. A família simples compara duas strings inteiras. A família de palavra encontra a substring da segunda string que melhor corresponde. A família estrita de palavra faz o mesmo, mas se alinha nos limites das palavras. Cada família tem o seu próprio limiar padrão.

Exemplo

Monte uma pequena tabela de nomes:
Busque nela por uma grafia que ninguém digitou e ordene o que volta:
Peter Brown compartilha trigramas de menos para atingir 0,3, então nunca aparece. Para ver o que está sendo comparado, peça os próprios trigramas:
Os espaços de preenchimento são intencionais. Eles permitem que o início e o fim de uma string contem para a pontuação.
O set_limit() do PostgreSQL não tem equivalente aqui, porque o vsql_trgm não mantém estado de sessão. Em vez disso, passe o limiar que você quer para o trgm_similar_threshold(). Um filtro de similaridade também lê todas as linhas, então meça-o antes de executar um contra uma tabela grande.

Veja também