sql >> Database teknologi >  >> RDS >> PostgreSQL

Sprogregistrering med data i PostgreSQL

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.



  1. Kan ikke finde nogen matchende række i brugertabellen

  2. Hvordan gemmer man en datatabel i databasen?

  3. MySql auto-inkrementerende alfanumerisk primær nøgle?

  4. 'ER_PARSE_ERROR' på node mysql ved indsættelse af flere værdier