Mar*_*rty 9 postgresql text nlp word-frequency
是否可以从Postgres中包含文本字符串的字段中识别每个字符和计数?
a_h*_*ame 19
像这样的东西?
SELECT some_pk,
regexp_split_to_table(some_column, '\s') as word
FROM some_table
获得不同的单词很容易:
SELECT DISTINCT word FROM ( SELECT regexp_split_to_table(some_column, '\s') as word FROM some_table ) t
或得到每个单词的计数:
SELECT word, count(*) FROM ( SELECT regexp_split_to_table(some_column, '\s') as word FROM some_table ) t GROUP BY word
Cha*_*tha 13
您也可以使用PostgreSQL文本搜索功能,例如:
SELECT * FROM ts_stat('SELECT to_tsvector(''hello dere hello hello ridiculous'')');
Run Code Online (Sandbox Code Playgroud)
会产生:
word | ndoc | nentry
---------+------+--------
ridicul | 1 | 1
hello | 1 | 3
dere | 1 | 1
(3 rows)
Run Code Online (Sandbox Code Playgroud)
(PostgreSQL应用依赖于语言的词干和停止词删除,这可能是你想要的,也可能不是.停止词删除和词干可以通过使用simple而不是english字典来禁用,见下文.)
嵌套SELECT语句可以是产生tsvector列的任何select语句,因此您可以将应用该to_tsvector函数的函数替换为任意数量的文本字段,并将它们连接到tsvector文档的任何子集上,例如:
SELECT * FROM ts_stat('SELECT to_tsvector(''english'',title) || to_tsvector(''english'',body) from my_documents id < 500') ORDER BY nentry DESC;
Run Code Online (Sandbox Code Playgroud)
将产生从前500个文档的title和body字段中获取的总字数的矩阵,按出现次数的降序排序.对于每个单词,您还将获得它出现的文档数(ndoc列).
有关更多详细信息,请参阅文档:http://www.postgresql.org/docs/current/static/textsearch.html
小智 5
单词之间应以空格''或其他分隔符号分隔;除非打算这样做,否则不要用“ s”表示,例如,将“ myWordshere”视为“ myWord”和“ here”。
SELECT word, count(*)
FROM (
SELECT regexp_split_to_table(some_column, ' ') as word
FROM some_table
) t
GROUP BY word
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9642 次 |
| 最近记录: |