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://www.youtube.com/watch?v=LS6kF43DEt8