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.