sql >> Databasteknik >  >> RDS >> PostgreSQL

Språkdetektering med data i PostgreSQL

Du kan använda PL/Perl (CREATE FUNCTION langof(text) LANGUAGE plperlu AS ... ) med 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";

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

Fungerar för 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 språkbibliotek (plperl.dll) kommer förinstallerat i senaste Windows-installationsprogrammet för postgres.

Men för att använda PL/Perl behöver du Perl-tolken själv. Närmare bestämt Perl 5.14 (när detta skrivs). Det vanligaste installationsprogrammet är ActiveState, men det är inte gratis. Gratis en kommer från StrawberryPerl . Se till att du har PERL514.DLL på plats.

Efter att du har installerat Perl, logga in på din postgres-databas och försök köra

CREATE LANGUAGE plperlu;

Språkidentifieringsbibliotek

Om kvaliteten är ditt problem har du några alternativ:Du kan förbättra Lingua::Identifiera dig själv (det är öppen källkod) eller så kan du prova ett annat bibliotek. Jag hittade denna , som är kommersiellt men ser lovande ut.



  1. Hur Cos() fungerar i PostgreSQL

  2. Hitta dubbletter av poster i MySQL

  3. Oracle till SQL2005 DATETIME-fältet svämmar över i SSIS

  4. PL/SQL använder VARRAY i IN CLAUSE