我正在从事内容重写程序,基本上它将用同义词替换单词.
id int(11)
keyword varchar(50)
synonyms varchar(255)
条目看起来像这样:
50 slake abate,slack,decrease,lessen,minify
51 abate slake,slack,decrease,lessen,minify
52 slack slake,abate,decrease,lessen,minify
53 decrease slake,abate,slack,lessen,minify
54 lessen slake,abate,slack,decrease,minify
55 minify slake,abate,slack,decrease,lessen
因此,我的第一个想法是首先获取文本中的每个单词进行重写(忽略黑名单中的某些关键字),然后进行SQL查询以查看数据库中是否存在该单词的同义词.但是,如果我有一个包含1000个单词的文本,那么1000个SQL查询会太多吗?另外,某些同义词有2个单词(例如“ throw away”),所以我最终要做的查询要比文本中的单词多得多.
有没有更好的方法来实现这一目标?
解决方法:
这是否可以更好地建模为规范化模式:
Word Table:
id int(11)
word varchar(50)
Synonym Table
WordId int(11)
SynonymId int(11)
然后,一个单词的同义词为:
Select W2.Word
from SynonymTable S
join WordTable W on S.WordId = W.Id
join WordTable W2 on S.SynonymId = W2.Id
where W.word = 'slake'
在WordTable(Word),SynonymTable(WordId)和SynonymTable(SynonymId)上创建索引
使用此方法的原因有很多:
>灵活:每个单词的同义词数量没有限制
>高效:由于规范化,行的大小非常小,因此每个数据库页面可容纳许多行,从而使更多的页面适合可用内存
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。