PostgreSQL - 通过ts_stat将lexemes转换为完整单词

时间:2015-06-02 13:42:43

标签: postgresql text tsvector

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

但是,我需要全文,而不仅仅是词汇。有没有办法将lexeme转换为PostgreSQL的全字表示之一?您可以轻松地将单词转换为其词汇,但我无法弄清楚如何反向。

感谢。

2 个答案:

答案 0 :(得分:1)

将ts_vector的配置更改为“简单”。默认是“英语”,它起作用 e.g。

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

答案 1 :(得分:-1)

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

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