Můžete použít PL/Perl
(CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) s Lingua::Identify
modul CPAN.
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";
A funkce:
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$;
Funguje pro 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 v systému Windows
Jazyková knihovna PL/Perl (plperl.dll) je předinstalována v nejnovějším instalačním programu postgres pro Windows.
Ale abyste mohli používat PL/Perl, potřebujete samotný interpret Perlu. Konkrétně Perl 5.14 (v době psaní tohoto článku). Nejběžnějším instalačním programem je ActiveState, ale není zdarma. Jeden zdarma pochází z StrawberryPerl
. Ujistěte se, že máte PERL514.DLL
na místě.
Po instalaci Perlu se přihlaste do své postgres databáze a zkuste spustit
CREATE LANGUAGE plperlu;
Knihovna identifikace jazyka
Pokud vám jde o kvalitu, máte několik možností:Můžete vylepšit Lingua::Identify sami (je to open source) nebo můžete zkusit jinou knihovnu. Našel jsem toto , který je komerční, ale vypadá slibně.