sql >> Databasteknik >  >> RDS >> PostgreSQL

tsector stöder bara engelska?

Det var ett tag sedan jag lekte med detta, men du måste skapa ts_vector på rätt språk, inte ts_query.

Så när du uppdaterar din tabell, använd:

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

Du kan också utöka funktionaliteten och använda en ispell-ordbok för att göra stemming bättre för textsökmotorn (även om den fortfarande inte kommer att vara lika sofistikerad som t.ex. Solr)

För att göra det, ladda ner ISPELL-lexikonet som är t.ex. finns i OpenOffice tyska ordboken

.oxt-filen är faktiskt en .zip-fil, så du kan helt enkelt extrahera dess innehåll.

Kopiera sedan filen de_DE_frami.dic till PostgreSQL "share/tsearch_data"-katalogen medan du ändrar tillägget till .dict (vilket är vad PostgreSQL förväntar sig.

Kopiera sedan filen de_DE_frami.aff till samma katalog, ändra tillägget till .affix .

Du måste konvertera båda (text)filerna till UTF-8 för att de ska fungera med PostgreSQL

Registrera sedan den ordboken med:

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;

När det är gjort kan du skapa din ts_vector med:

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

Detta beskrivs också i manualen:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY



  1. Flytta från LINQpad till ett riktigt Visual Studio-projekt?

  2. Hur installerar jag Oracle Instant Client på en Mac?

  3. Att utföra en vänsterkoppling över ett många-till-många-bord med villkor

  4. Använd Firebase DB med lokal DB