计算文本中的完全匹配

时间:2014-08-15 10:44:36

标签: mysql

我有两张桌子。

  1. 分类广告,包含正文。
  2. 关键字,包含“银戒指”等关键字组合
  3. 现在我想知道,每个关键字的文本字段中有多少完全匹配。

    e.g:

    chihuahua bilder    30
    chihuahua charakter 230
    

    不知怎的,我的SQL语句遗漏了一些东西:

    SELECT k.keyword, count(*) AS c 
    FROM `classifieds` c, keywords k 
    WHERE c.text LIKE concat('%', + k.keyword + '%') 
    GROUP BY keyword
    

    每个关键字的计数值始终相同。

    有人知道错误在哪里吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这是棘手的SQL:

SELECT text, keyword,
  (LENGTH(c.text) - LENGTH(REPLACE(c.text, k.keyword, ''))) / LENGTH(k.keyword)
FROM classified c INNER JOIN keywords k
   ON c.text LIKE CONCAT('%', k.keyword, '%');
  • 让$ replace = REPLACE(c.text, k.keyword, '')
    • keyword
    • 中移除text
  • 让$ len = LENGTH(c.text) - LENGTH($replace)
    • 这会计算“从text
    • 中删除的字符数
  • $len / LENGTH(k.keyword)
    • 最后,我们了解keyword text有多少{。}}。