首页 > 解决方案 > 使用 PostgreSQL 统计文本中多词短语的出现次数

问题描述

我有一个问题,我需要计算一个词组出现在 PostgreSQL 数据库的文本字段中的频率。

我知道诸如此类的功能,to_tsquery()并且我正在使用它来检查文本中是否存在短语to_tsquery('simple', 'sample text'),但是,我不确定如何准确计算这些出现的次数。

标签: postgresqlnlp

解决方案


如果单词在字符串中只包含一次(我在这里假设您的表包含两列,一列带有 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

可以在此处找到此函数的语法以及有关字符串模式匹配的更多信息。


推荐阅读