如何使用Postgres全文搜索来获取最常用的关键字?

时间:2015-07-30 21:00:50

标签: postgresql

我想使用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:实际上我想用葡萄牙语做,所以我不能使用任何只适用于英语的现有配置。

1 个答案:

答案 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');