Você pode usar PL/Perl (
CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) com Lingua::Identify
Módulo CPAN. script Perl:
#!/usr/bin/perl
use Lingua::Identify qw(langof);
undef $/;
my $textstring = <>; ## warning - slurps whole file to memory
my $a = langof( $textstring ); # gives the most probable language
print "$a\n";
E a função:
create or replace function langof( text ) returns varchar(2)
immutable returns null on null input
language plperlu as $perlcode$
use Lingua::Identify qw(langof);
return langof( shift );
$perlcode$;
Funciona para mim:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
langof
--------
pl
(1 row)
Time: 1.801 ms
PL/Perl no Windows
A biblioteca de idiomas PL/Perl (plperl.dll) vem pré-instalada no instalador mais recente do Windows do postgres.
Mas para usar PL/Perl, você precisa do próprio interpretador Perl. Especificamente, Perl 5.14 (no momento da redação deste artigo). O instalador mais comum é o ActiveState, mas não é gratuito. O gratuito vem de StrawberryPerl . Certifique-se de ter
PERL514.DLL
no lugar. Após instalar o Perl, faça login no seu banco de dados postgres e tente executar
CREATE LANGUAGE plperlu;
Biblioteca de identificação de idiomas
Se a qualidade é sua preocupação, você tem algumas opções:Você pode melhorar o Lingua::Identify (é de código aberto) ou você pode tentar outra biblioteca. Encontrei este , que é comercial, mas parece promissor.