3

我试图从我的 PostgreSQL 数据库中获取字数以生成词云类型视图。我希望利用 ts_vectors 的内置效率。我看到有一个 ts_stats 函数,它返回一个词位列表及其频率,给定一个 ts_vector 列。

返回的行如下所示:

word    ndoc    nentry
studi   322     43434
compani 233     2322

查询如下所示:

SELECT * FROM ts_stat('SELECT tsv from doc')
ORDER BY nentry DESC, ndoc DESC, word
LIMIT 10 

但是,我需要完整的单词,而不仅仅是词位。有没有办法使用 PostgreSQL 将词位转换为其全字表示之一?您可以轻松地将单词转换为其词位,但我不知道如何进行相反的操作。

谢谢。

4

2 回答 2

2

将 ts_vector 的配置更改为“简单”。默认值为“english”,用于进行词干处理,例如

SELECT * FROM ts_stat('SELECT to_tsvector(''freds company company company hello ridiculous'')');

输出计数ridicul, compani, hello, fred

使用“简单”配置不会发生词干

SELECT * FROM ts_stat('SELECT to_tsvector(''simple'',''freds company company company hello ridiculous'')');

输出计数:ridiculous,hello,freds,company

于 2016-06-30T05:48:19.630 回答
-1

这是不可能的。您可以将初始文本存储到单独的列中。

词位是一个单词的规范化表示(使用字典或词干分析器),因此它可以匹配多种形式:词位'walk'匹配'walks''walking',因此无法确定原始形式。

于 2017-02-22T17:43:34.320 回答