Du kan använda PL/Perl
(CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) med Lingua::Identify
CPAN-modul.
Perl-skript:
#!/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";
Och funktionen:
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$;
Fungerar för mig:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
langof
--------
pl
(1 row)
Time: 1.801 ms
PL/Perl på Windows
PL/Perl språkbibliotek (plperl.dll) kommer förinstallerat i senaste Windows-installationsprogrammet för postgres.
Men för att använda PL/Perl behöver du Perl-tolken själv. Närmare bestämt Perl 5.14 (när detta skrivs). Det vanligaste installationsprogrammet är ActiveState, men det är inte gratis. Gratis en kommer från StrawberryPerl
. Se till att du har PERL514.DLL
på plats.
Efter att du har installerat Perl, logga in på din postgres-databas och försök köra
CREATE LANGUAGE plperlu;
Språkidentifieringsbibliotek
Om kvaliteten är ditt problem har du några alternativ:Du kan förbättra Lingua::Identifiera dig själv (det är öppen källkod) eller så kan du prova ett annat bibliotek. Jag hittade denna , som är kommersiellt men ser lovande ut.