Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
it:postgresql:czech_fulltext [2015/04/22 14:26]
kourim vytvořeno
it:postgresql:czech_fulltext [2015/05/19 14:21] (aktuální)
kourim [Zajímavé odkazy]
Řádek 1: Řádek 1:
-===== České fulltext ​vyhledávání =====+===== Fulltext ​vyhledávání =====
  
-Popis jak nastavit fulltextové vyhledávání v postgres ​za pomocí českého ispell slovníku.+Popis jak nastavit ​české ​fulltextové vyhledávání v postgresql ​za pomocí českého ispell slovníku.
  
-  - vytvoříme sloupeček, ve kterém se bude hledat <sxh sql; first-line: 1; title: Basic usage>ALTER TABLE items ADD COLUMN search_text TSVECTOR DEFAULT NULL;</​sxh>​ +  - vytvoříme sloupeček, ve kterém se bude hledat <sxh sql>​ALTER TABLE items ADD COLUMN search_text TSVECTOR DEFAULT NULL;</​sxh>​ 
-  - do /​usr/​share/​postgresql/​9.3/​tsearch_data je potřeba nahrát slovníky +  - do /​usr/​share/​postgresql/​9.3/​tsearch_data je potřeba nahrát slovníky ​{{:​it:​postgresql:​ispell-czech.zip|český ispell}} 
-  - je potřeba vytvořit slovník <sxh sql; first-line: 1; title: Basic usage>CREATE TEXT SEARCH DICTIONARY czech_ispell (+  - je potřeba vytvořit slovník <sxh sql>​CREATE TEXT SEARCH DICTIONARY czech_ispell (
     TEMPLATE = ispell,     TEMPLATE = ispell,
     DictFile = czech,     DictFile = czech,
Řádek 11: Řádek 11:
     StopWords = czech     StopWords = czech
 );</​sxh>​ );</​sxh>​
-  - nyní je potřeba vytvořit konfiguraci (tady se dá dost hrat, dole lze definovat spousta slovníků) <sxh sql; first-line: 1; title: Basic usage>CREATE TEXT SEARCH CONFIGURATION public.czech ( COPY = pg_catalog.english );+  - nyní je potřeba vytvořit konfiguraci (tady se dá dost hrat, dole lze definovat spousta slovníků) <sxh sql>​CREATE TEXT SEARCH CONFIGURATION public.czech ( COPY = pg_catalog.english );
 ALTER TEXT SEARCH CONFIGURATION czech ALTER TEXT SEARCH CONFIGURATION czech
     ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,​     ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,​
Řádek 17: Řádek 17:
     WITH czech_ispell,​ simple;     WITH czech_ispell,​ simple;
 ALTER TEXT SEARCH CONFIGURATION czech DROP MAPPING FOR email, url, url_path, sfloat, float;</​sxh>​ ALTER TEXT SEARCH CONFIGURATION czech DROP MAPPING FOR email, url, url_path, sfloat, float;</​sxh>​
-  - vytvoření indexu <sxh sql; first-line: 1; title: Basic usage>UPDATE items SET search_text = to_tsvector('​czech',​ title || ' ' || (attributes->>'​identification'​)::​text);​+  - vytvoření indexu <sxh sql>​UPDATE items SET search_text = to_tsvector('​czech',​ title || ' ' || (attributes->>'​identification'​)::​text);​
 CREATE INDEX search_text_gin ON items USING GIN(search_text);</​sxh>​ CREATE INDEX search_text_gin ON items USING GIN(search_text);</​sxh>​
-  - vytvoříme si trigger, který bude pravidelně index udržovat <sxh sql; first-line: 1; title: Basic usage>CREATE FUNCTION avector_update() RETURNS TRIGGER AS $$+  - vytvoříme si trigger, který bude pravidelně index udržovat <sxh sql>​CREATE FUNCTION avector_update() RETURNS TRIGGER AS $$
 BEGIN BEGIN
     IF TG_OP = '​INSERT'​ THEN     IF TG_OP = '​INSERT'​ THEN
Řádek 31: Řádek 31:
 $$ LANGUAGE '​plpgsql';​ $$ LANGUAGE '​plpgsql';​
 CREATE TRIGGER ts_search_text BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE avector_update();</​sxh>​ CREATE TRIGGER ts_search_text BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE avector_update();</​sxh>​
-  - nyní je možné volat hledání s jazykem czech <sxh sql; first-line: 1; title: Basic usage>SELECT * FROM items where search_text @@ to_tsquery('​czech',​ '​keyword'​);</​sxh>​+  - nyní je možné volat hledání s jazykem czech <sxh sql>​SELECT * FROM items where search_text @@ to_tsquery('​czech',​ '​keyword'​);</​sxh>​
  
 ==== Zajímavé odkazy ==== ==== Zajímavé odkazy ====
   * http://​antjanus.com/​blog/​tutorials/​using-postgresql-as-a-search-engine/​   * http://​antjanus.com/​blog/​tutorials/​using-postgresql-as-a-search-engine/​
   * http://​www.postgresql.org/​docs/​9.3/​static/​textsearch-dictionaries.html   * http://​www.postgresql.org/​docs/​9.3/​static/​textsearch-dictionaries.html
 +  * http://​www.scottlowe.eu/​blog/​2011/​04/​28/​postgresql-full-text-search-is-often-good-enough/​
  • it/postgresql/czech_fulltext.1429705592.txt.gz
  • Poslední úprava: 2015/04/22 14:26
  • autor: kourim