2012-07-26 76 views
2

我一直在用postgres進行全文搜索,我在想,是否有可能返回所有行的總字數?postgres全文搜索字數

所以,讓我們說你有

text_col 
_______ 
'dog' 
'dog cat' 
'dog bird dog' 

「狗」的數量應該有四個,「貓」的數量應該是一個和鳥類也應該是一個。

現在我已將所有tsvectors保存到杜松子酒索引列中。

當然,這將是所有行,你可以這樣說

select max(ts_count(text_col_tsvector)) from mytable; 

(我編的,但我希望你得到的總體思路)

是唯一可能的返回詞位的數量,如果是的話,如何返回返回的詞位(或數組)。

回答

3

怎麼樣:

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 

+0

這是有用的,讓我在寫作方向,但這隻會返回詞位。我真正需要知道的是具體的單詞計數,否則返回與特定詞位關聯的單詞詞典(或數組)。 – 2012-07-27 14:56:28

+0

@JamesR查看編輯答案 – maniek 2012-07-27 15:26:43

+0

這是我想要的95%。我希望能夠使用索引的詞法分析器,但我不確定是否有可能倒退到lex引用的詞典詞典。我使用了上面的內容並稍加添加:word( )選擇regexp_split_to_table(element_text,E'\\ W +')作爲字 from mytable ), word_lex as(select word,count(*)as cnt , to_tsvector( '英語',COALESCE(字, ''))爲t 從詞語 組由1爲了通過2降序) SELECT * FROM word_lex WHERE 噸!= '如果使用TE' – 2012-07-27 17:53:44