使用PostgreSQL计算文本中多词短语的出现次数
我有一个问题,我需要计算一个单词短语出现在PostgreSQL数据库的文本字段中的频率使用PostgreSQL计算文本中多词短语的出现次数,postgresql,nlp,Postgresql,Nlp,我有一个问题,我需要计算一个单词短语出现在PostgreSQL数据库的文本字段中的频率 我知道诸如to_tsquery()之类的函数,我使用它来检查文本中是否存在短语,使用to_tsquery('simple','sample text'),但是,我不确定如何准确地计算这些出现的次数。如果单词在字符串中只包含一次(我在这里假设您的表包含两列,一列带有id,另一列带有名为my_text的文本列): 如果每个字段的出现次数超过一次,则可以使用此嵌套查询: SELECT id, c
我知道诸如
to_tsquery()
之类的函数,我使用它来检查文本中是否存在短语,使用to_tsquery('simple','sample text')
,但是,我不确定如何准确地计算这些出现的次数。如果单词在字符串中只包含一次(我在这里假设您的表包含两列,一列带有id
,另一列带有名为my_text
的文本列):
如果每个字段的出现次数超过一次,则可以使用此嵌套查询:
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
可以找到此函数的语法以及有关字符串模式匹配的更多信息。我希望计算单个文本字段中的多次出现次数,这将只计算每列一次。例如:假设我在“this is a sample text”中查找“sample text”,我希望它计算一次,但如果它选中另一个条目“示例文本就是示例文本”,我希望它能计数两次。很抱歉出现任何混乱。在您添加了更多详细信息后,我已编辑了我的答案。这看起来像是我在寻找的,谢谢!然后请对答案进行评分并将其标记为已接受!当然,对不起,我将等待我完全实现它。但它正在按照我的要求进行操作。
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