Puede usar PL/Perl
(CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) con Lingua::Identify
Módulo CPAN.
Guión 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";
Y la función:
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 mí:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
langof
--------
pl
(1 row)
Time: 1.801 ms
PL/Perl en Windows
La biblioteca de idiomas PL/Perl (plperl.dll) viene preinstalada en el último instalador de Windows de postgres.
Pero para usar PL/Perl, necesita el propio intérprete de Perl. Específicamente, Perl 5.14 (en el momento de escribir este artículo). El instalador más común es ActiveState, pero no es gratuito. El gratuito proviene de StrawberryPerl
. Asegúrate de tener PERL514.DLL
en su lugar.
Después de instalar Perl, inicie sesión en su base de datos de postgres e intente ejecutar
CREATE LANGUAGE plperlu;
Biblioteca de identificación de idiomas
Si lo que le preocupa es la calidad, tiene algunas opciones:puede mejorar Lingua::Identify usted mismo (es de código abierto) o puede probar con otra biblioteca. Encontré este , que es comercial pero parece prometedor.