sql >> Database >  >> RDS >> PostgreSQL

tsvector ondersteunt alleen Engels?

Het is een tijdje geleden dat ik hiermee heb gespeeld, maar je moet de ts_vector in de juiste taal maken, niet de ts_query.

Dus wanneer u uw tabel bijwerkt, gebruikt u:

UPDATE blog_entry SET body_tsv=to_tsvector('german', body);

U kunt de functionaliteit ook uitbreiden en een Ispell-woordenboek gebruiken om stammen beter te maken voor de tekstzoekmachine (hoewel het nog steeds niet zo geavanceerd zal zijn als bijvoorbeeld Solr)

Download hiervoor het ISPELL-woordenboek dat b.v. opgenomen in het OpenOffice Duits woordenboek

Het .oxt-bestand is eigenlijk een .zip-bestand, dus u kunt de inhoud eenvoudig uitpakken.

Kopieer vervolgens het bestand de_DE_frami.dic naar de PostgreSQL-map "share/tsearch_data" terwijl u de extensie wijzigt in .dict (wat PostgreSQL verwacht.

Kopieer vervolgens het bestand de_DE_frami.aff naar dezelfde map, waarbij de extensie wordt gewijzigd in .affix .

U moet beide (tekst)bestanden naar UTF-8 converteren om met PostgreSQL te kunnen werken

Registreer dat woordenboek dan met:

CREATE TEXT SEARCH CONFIGURATION de_config (copy=german);

CREATE TEXT SEARCH DICTIONARY german_stem (
    TEMPLATE = snowball,
    Language = german
);

CREATE TEXT SEARCH DICTIONARY german_ispell (
    TEMPLATE = ispell,
    dictfile = de_DE_frami,
    afffile = de_de_frami
);

alter text search configuration de_config 
     alter mapping for asciiword WITH german_ispell, german_stem;

Zodra dat is gebeurd, kunt u uw ts_vector maken met:

UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);

Dit wordt ook beschreven in de handleiding:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY



  1. Database-ontwerp:één grote tabel of aparte tabellen?

  2. Tips voor het opslaan van PostgreSQL-back-ups op Amazon AWS

  3. Meest efficiënte manier om rijen in de MySQL-database in te voegen

  4. ExecuteNonQuery voor SELECT sql-instructie die geen rijen retourneert