Postgresql postgres全文搜索字数

Postgresql postgres全文搜索字数,postgresql,full-text-search,Postgresql,Full Text Search,我一直在postgres中进行全文搜索,我想知道,是否有可能返回所有行的总字数 那么,假设你有 text_col _______ 'dog' 'dog cat' 'dog bird dog' “狗”应该是四个,“猫”应该是一个,鸟也应该是一个 现在我已经将所有的tsvectors保存到一个gin索引列中 当然,这会跨越所有行,你可以这样说 select max(ts_count(text_col_tsvector)) from mytable; 这是我编造的,但我希望你能了解大意

我一直在postgres中进行全文搜索,我想知道,是否有可能返回所有行的总字数

那么,假设你有

 text_col
 _______
 'dog'
 'dog cat'
 'dog bird dog'
“狗”应该是四个,“猫”应该是一个,鸟也应该是一个

现在我已经将所有的tsvectors保存到一个gin索引列中

当然,这会跨越所有行,你可以这样说

select max(ts_count(text_col_tsvector)) from mytable;
这是我编造的,但我希望你能了解大意

是否只能返回词素的计数,如果是,如何返回返回的词素字典或数组。

如何:

select * from ts_stat('select text_col_tsvector from mytable')
编辑: 你的意思是:

with words as (
select regexp_split_to_table(text_column , E'\\W+') as word
from mytable
)
select word, count(*) as cnt from words group by 1 order by 2 desc 

这很有用,可以让我了解写入方向,但这只返回词素。我真正需要知道的是具体的字数,否则,返回与特定词素相关的词典或单词数组。这是我想要的95%。我希望使用索引lexer,但我不确定是否有可能回到lex引用的单词词典。我使用了您上面的内容,并稍微添加了一些内容:将单词作为select regexp_split_to_tableelement_text,将E'\\W+'作为mytable中的单词,将单词作为select单词,将*计算为cnt,将*作为向量'english',合并为单词,将t作为单词组中的t,按1的顺序按2的顺序从单词组中选择*,其中t!=@JamesR如果您使用te'simple'dictionary来构建tsvector列,那么词素将是实际的单词,第一个查询就可以做到这一点