0
我有一个关联表的关联与一个整数权重与它关联。在另一张桌子上,我有一张文字表格。我想通过查找关键字并将文本中的权重相加来计算每个文本的值。有没有办法完全在SQL中做到这一点?搜索另一个表中的所有关键字的文本
我有一个关联表的关联与一个整数权重与它关联。在另一张桌子上,我有一张文字表格。我想通过查找关键字并将文本中的权重相加来计算每个文本的值。有没有办法完全在SQL中做到这一点?搜索另一个表中的所有关键字的文本
如果你代表你的文字作为
| 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 |
这是一个非常有趣的想法。这几乎就像将文档转换为矢量。最终,我可以规范化文本表中的单词以将其索引到字典中。我想知道这是否是一种常见方法,是否存在任何缺点。 – user805547
我刚刚找到一个:需要一个额外的单词顺序。连接所有字符串的UI代码也很复杂。看起来好像需要用一些C++代码来分割表格来创建表格,不过也可以按需要做。从你的方法,我想出了另一个:在文本中的每个单词的大WHERE IN子句。 – user805547