Можете да използвате PL/Perl
(CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) с Lingua::Identify
CPAN модул.
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";
И функцията:
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$;
Работи за мен:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
langof
--------
pl
(1 row)
Time: 1.801 ms
PL/Perl под Windows
Езиковата библиотека PL/Perl (plperl.dll) се доставя предварително инсталирана в най-новата инсталационна програма на Windows на postgres.
Но за да използвате PL/Perl, имате нужда от самия интерпретатор на Perl. По-конкретно, Perl 5.14 (по време на това писане). Най-често срещаният инсталатор е ActiveState, но не е безплатен. Безплатен идва от StrawberryPerl
. Уверете се, че имате PERL514.DLL
на място.
След като инсталирате Perl, влезте във вашата база данни на postgres и опитайте да стартирате
CREATE LANGUAGE plperlu;
Библиотека за идентификация на език
Ако качеството ви притеснява, имате някои опции:Можете да подобрите Lingua::Identify сами (това е с отворен код) или можете да опитате друга библиотека. Намерих това , което е комерсиално, но изглежда обещаващо.