PostgreSQL 全文索引

-- 首先要创建自定义的词典,在不使用停用词文件的情况下创建自定义词典,例如:
CREATE TEXT SEARCH DICTIONARY english_stem_nostop (
    Template = snowball
    , Language = english
);
-- 请注意,在上面我省略了StopWords参数。
-- 然后创建一个新的配置来使用你的新词典:
CREATE TEXT SEARCH CONFIGURATION public.english_nostop ( COPY = pg_catalog.english );
ALTER TEXT SEARCH CONFIGURATION public.english_nostop
   ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, hword, hword_part, word WITH english_stem_nostop;


-- 添加全文索引字段并且建立触发器 -- alter table keyword add COLUMN keyword_participle tsvector; -- create or replace function keyword_ts_trigger_function() returns trigger as $$ -- begin -- new.keyword_participle := to_tsvector('english_nostop',COALESCE(new.keyword,'') ); -- return new; -- end -- $$ language plpgsql; -- -- create trigger messages_ts_trigger -- before insert -- on keyword -- for each row -- execute procedure keyword_ts_trigger_function(); -- 创建索引 -- CREATE INDEX keyword_full_text_index on keyword -- using gin(keyword_participle);
-- 更新刚刚创建的字段
-- update keyword set keyword_participle = to_tsvector('english_nostop', COALESCE(keyword, ''));

参考文章:

https://stackoverflow.com/questions/1497895/can-i-configure-stop-words-programmatically-with-postgresql-full-text-search

https://www.youtube.com/watch?v=LS6kF43DEt8

 

posted @ 2018-05-29 16:34  Ryan_zheng  阅读(485)  评论(0编辑  收藏  举报