sql >> Databáze >  >> RDS >> PostgreSQL

tsvector podporuje pouze angličtinu?

Už je to nějaký čas, co jsem si s tím hrál, ale musíte vytvořit ts_vector ve správném jazyce, ne ts_query.

Když tedy aktualizujete tabulku, použijte:

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

Můžete také rozšířit funkcionalitu a použít slovník ispell, aby bylo stemming lepší pro textový vyhledávač (i když stále nebude tak sofistikovaný jako např. Solr)

Chcete-li to provést, stáhněte si slovník ISPELL, který je např. obsažené v OpenOffice německém slovníku

Soubor .oxt je ve skutečnosti soubor .zip, takže jeho obsah můžete jednoduše extrahovat.

Poté zkopírujte soubor de_DE_frami.dic do adresáře PostgreSQL "share/tsearch_data" při změně přípony na .dict (což PostgreSQL očekává.

Poté zkopírujte soubor de_DE_frami.aff do stejného adresáře, změnou přípony na .affix .

Musíte převést oba (textové) soubory do UTF-8, aby fungovaly s PostgreSQL

Poté zaregistrujte tento slovník pomocí:

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;

Jakmile to uděláte, můžete vytvořit svůj ts_vector pomocí:

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

Toto je také popsáno v příručce:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY



  1. Jak načíst soubor XML do databáze pomocí balíčku SSIS?

  2. Chyba ORA-01745 při provádění parametrizovaných dotazů v c#

  3. Jak používat „To se mi líbí“ v SQL

  4. Nastavte časový limit připojení k databázi Oracle 10g v Javě