PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Détection de la langue avec des données dans PostgreSQL

Vous pouvez utiliser PL/Perl (CREATE FUNCTION langof(text) LANGUAGE plperlu AS ... ) avec Lingua::Identify Module 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";

Et la fonction :

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$;

Fonctionne pour moi :

[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
 langof
--------
 pl
(1 row)

Time: 1.801 ms

PL/Perl sous Windows

La bibliothèque de langage PL/Perl (plperl.dll) est préinstallée dans le dernier programme d'installation Windows de postgres.

Mais pour utiliser PL/Perl, vous avez besoin de l'interpréteur Perl lui-même. Plus précisément, Perl 5.14 (au moment d'écrire ces lignes). Le programme d'installation le plus courant est ActiveState, mais il n'est pas gratuit. Le gratuit vient de StrawberryPerl . Assurez-vous d'avoir PERL514.DLL en place.

Après avoir installé Perl, connectez-vous à votre base de données postgres et essayez d'exécuter

CREATE LANGUAGE plperlu;

Bibliothèque d'identification des langues

Si la qualité est votre souci, vous avez quelques options :Vous pouvez améliorer Lingua ::Identifiez-vous (c'est open source) ou vous pouvez essayer une autre bibliothèque. J'ai trouvé celui-ci , qui est commercial mais semble prometteur.