Popis jak nastavit české fulltextové vyhledávání v postgresql za pomocí českého ispell slovníku.
ALTER TABLE items ADD COLUMN search_text TSVECTOR DEFAULT NULL;
CREATE TEXT SEARCH DICTIONARY czech_ispell (
TEMPLATE = ispell,
DictFile = czech,
AffFile = czech,
StopWords = czech
);CREATE TEXT SEARCH CONFIGURATION public.czech ( COPY = pg_catalog.english );
ALTER TEXT SEARCH CONFIGURATION czech
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH czech_ispell, simple;
ALTER TEXT SEARCH CONFIGURATION czech DROP MAPPING FOR email, url, url_path, sfloat, float;UPDATE items SET search_text = to_tsvector('czech', title || ' ' || (attributes->>'identification')::text);
CREATE INDEX search_text_gin ON items USING GIN(search_text);CREATE FUNCTION avector_update() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
NEW.search_text = to_tsvector('czech', NEW.title || ' ' || (NEW.attributes->>'identification')::text);
END IF;
IF TG_OP = 'UPDATE' THEN
NEW.search_text = to_tsvector('czech', NEW.title || ' ' || (NEW.attributes->>'identification')::text);
END IF;
RETURN NEW;
END
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER ts_search_text BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE avector_update();SELECT * FROM items where search_text @@ to_tsquery('czech', 'keyword');