我想使用Postgres全文搜索功能生成数据库中给定列中10个最常用关键字的列表,就像this question一样。 关键是我无法通过给定的答案得到结果:使用提供的链接我能够得到这个查询:
SELECT * FROM ts_stat('select to_tsvector(''english'', ''a running mobile elevator'')')
ORDER BY nentry DESC, ndoc DESC, word
它返回:
"elev";1;1
"mobil";1;1
"run";1;1
问题是我想从这个结果中构建一个Word Cloud,所以“elev”或“mobil”对我没有帮助。
有什么方法可以避免/撤消词干吗?
ps:实际上我想用葡萄牙语做,所以我不能使用任何只适用于英语的现有配置。
答案 0 :(得分:0)
如果有人有同样的问题。 我必须首先使用葡萄牙语停用词(http://www.postgresql.org/docs/9.1/static/textsearch-dictionaries.html#TEXTSEARCH-STOPWORDS)创建基于简单的dicitionary:
CREATE TEXT SEARCH DICTIONARY public.simple_dict (
TEMPLATE = pg_catalog.simple,
STOPWORDS = english
);
然后在搜索配置中使用它:
CREATE TEXT SEARCH CONFIGURATION tst (copy=simple);
ALTER TEXT SEARCH CONFIGURATION tst ALTER MAPPING FOR asciiword WITH public.simple_dict;
然后它奏效了:
SELECT to_tsvector('tst','indices');