sql >> Base de Datos >  >> RDS >> PostgreSQL

Detección de idioma con datos en PostgreSQL

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.