Sie können PL/Perl
verwenden (CREATE FUNCTION
langof(text) LANGUAGE
plperlu
AS ...
) mit 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";
Und die Funktion:
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$;
Funktioniert bei mir:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
langof
--------
pl
(1 row)
Time: 1.801 ms
PL/Perl unter Windows
Die PL/Perl-Sprachbibliothek (plperl.dll) ist im neuesten Windows-Installationsprogramm von Postgres vorinstalliert.
Aber um PL/Perl zu verwenden, benötigen Sie den Perl-Interpreter selbst. Insbesondere Perl 5.14 (zum Zeitpunkt des Schreibens dieses Artikels). Das gebräuchlichste Installationsprogramm ist ActiveState, aber es ist nicht kostenlos. Der kostenlose kommt von StrawberryPerl
. Stellen Sie sicher, dass Sie PERL514.DLL
haben vorhanden.
Melden Sie sich nach der Installation von Perl bei Ihrer Postgres-Datenbank an und versuchen Sie es auszuführen
CREATE LANGUAGE plperlu;
Spracherkennungsbibliothek
Wenn Qualität Ihr Anliegen ist, haben Sie einige Optionen:Sie können Lingua::Identify selbst verbessern (es ist Open Source) oder Sie könnten eine andere Bibliothek ausprobieren. Ich habe diesen gefunden , das kommerziell ist, aber vielversprechend aussieht.