2011-07-16 54 views
0

我有一个关联表的关联与一个整数权重与它关联。在另一张桌子上,我有一张文字表格。我想通过查找关键字并将文本中的权重相加来计算每个文本的值。有没有办法完全在SQL中做到这一点?搜索另一个表中的所有关键字的文本

回答

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 | 
+0

这是一个非常有趣的想法。这几乎就像将文档转换为矢量。最终,我可以规范化文本表中的单词以将其索引到字典中。我想知道这是否是一种常见方法,是否存在任何缺点。 – user805547

+0

我刚刚找到一个:需要一个额外的单词顺序。连接所有字符串的UI代码也很复杂。看起来好像需要用一些C++代码来分割表格来创建表格,不过也可以按需要做。从你的方法,我想出了另一个:在文本中的每个单词的大WHERE IN子句。 – user805547

相关问题