postgresql - 使用 PostgreSQL 统计文本中多词短语的出现次数
问题描述
我有一个问题,我需要计算一个词组出现在 PostgreSQL 数据库的文本字段中的频率。
我知道诸如此类的功能,to_tsquery()
并且我正在使用它来检查文本中是否存在短语to_tsquery('simple', 'sample text')
,但是,我不确定如何准确计算这些出现的次数。
解决方案
如果单词在字符串中只包含一次(我在这里假设您的表包含两列,一列带有 an id
,另一列带有名为 的文本列my_text
):
SELECT
count(id)
FROM
my_table
WHERE
my_text ~* 'the_words_i_am_looking_for'
如果每个字段的出现次数超过一个,则可以使用此嵌套查询:
SELECT
id,
count(matches) as matches
FROM (
SELECT
id,
regexp_matches(my_text, 'the_words_i_am_looking_for', 'g') as matches
FROM
my_table
) t
GROUP BY 1
可以在此处找到此函数的语法以及有关字符串模式匹配的更多信息。
推荐阅读
- python - 使用 matplotlib 将标签居中在一个圆圈内
- python-3.x - Pandas - 如何通过组合多个 csv 文件跳过 csv 文件的第一行作为标题
- javascript - 第一个登录逻辑在 React 应用程序中不起作用
- laravel - Laravel 某些电子邮件无法在服务器上传递
- selenium - 无法在表单类或 div 类中找到元素
- csv - 使用 VBScript 将 CSV 列数据拆分为新的 CSV 文件
- spring-boot - 将 Spring Boot 项目部署到 Wildfly 时出现 Weld DefinitionException
- java - 使用 Java 从 ShapeFile 读取和提取数据
- neo4j - 获取neo4j中所有与查询匹配的节点的所有连接节点
- python - 多处理和图像采集