搜索另一个表中所有关键字的文本

时间:2011-07-16 18:12:21

标签: mysql sql

我有一个关键字表,其中包含与之关联的整数权重。在另一张表中,我有一个文本表。我想通过查找关键字并对文本中的权重求和来计算每个文本的值。有没有办法在SQL中完全执行此操作?

1 个答案:

答案 0 :(得分:1)

如果您将文字表示为

| text_id | count | word      |
|---------+-------+-----------|
|       1 |     1 | nice      |
|       1 |     2 | weather   |
|       1 |     3 | no?       |
|       2 |     1 | Mayer     |
|       2 |     2 | Hawthorne |
|       2 |     3 | has       |
|       2 |     4 | soul      |

其中ID为1的文字是“天气不好?”,例如,您可以使用关键字表计算文本分数

| keyword   | weight |
|-----------+--------|
| weather   |      2 |
| nice      |      3 |
| Hawthorne |     10 |
| soul      |      5 |

SELECT t.text_id AS text_id, SUM(k.weight) AS score
FROM texts t
LEFT JOIN keywords k
ON k.keyword == t.word
GROUP BY t.text_id;

导致

| text_id | score |
|---------+-------|
|       1 |     5 |
|       2 |    15 |