sql >> Database >  >> RDS >> PostgreSQL

Taaldetectie met gegevens in PostgreSQL

U kunt PL/Perl gebruiken (CREATE FUNCTION langof(text) LANGUAGE plperlu AS ... ) met Lingua::Identify CPAN-module.

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";

En de functie:

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$;

Werkt voor mij:

[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
 langof
--------
 pl
(1 row)

Time: 1.801 ms

PL/Perl op Windows

PL/Perl-taalbibliotheek (plperl.dll) wordt vooraf geïnstalleerd in het nieuwste Windows-installatieprogramma van postgres.

Maar om PL/Perl te gebruiken, heb je de Perl-interpreter zelf nodig. In het bijzonder Perl 5.14 (op het moment van schrijven). Het meest voorkomende installatieprogramma is ActiveState, maar het is niet gratis. Gratis komt van StrawberryPerl . Zorg ervoor dat u PERL514.DLL . heeft op zijn plaats.

Nadat u Perl hebt geïnstalleerd, logt u in op uw postgres-database en probeert u

CREATE LANGUAGE plperlu;

Taalidentificatiebibliotheek

Als kwaliteit uw zorg is, heeft u enkele opties:U kunt Lingua::Identify uzelf verbeteren (het is open source) of u kunt een andere bibliotheek proberen. Ik vond deze , wat commercieel is maar er veelbelovend uitziet.



  1. PHP MySQLi Query tussen twee keer van de query zelf

  2. Log elke MySQL-query in een bestand door het algemene logboek in MAMP in te schakelen

  3. Oracle-procedure overdragen naar PostgreSQL

  4. Hoe de laatste twee rijen met een bepaalde waarde op datum in SQL te krijgen?