Du kan bruge PL/Perl
(CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) med Lingua::Identify
CPAN-modul.
Perl-script:
#!/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";
Og 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$;
Virker for 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 sprogbibliotek (plperl.dll) leveres forudinstalleret i det seneste Windows-installationsprogram af postgres.
Men for at bruge PL/Perl skal du bruge Perl-tolken selv. Specifikt Perl 5.14 (på tidspunktet for dette skrivende). Det mest almindelige installationsprogram er ActiveState, men det er ikke gratis. Gratis en kommer fra StrawberryPerl
. Sørg for at du har PERL514.DLL
på plads.
Når du har installeret Perl, skal du logge ind på din postgres-database og prøve at køre
CREATE LANGUAGE plperlu;
Sprogidentifikationsbibliotek
Hvis kvaliteten er din bekymring, har du nogle muligheder:Du kan forbedre Lingua::Identificere dig selv (det er open source), eller du kan prøve et andet bibliotek. Jeg fandt denne , som er kommercielt, men ser lovende ud.