微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我需要对文本中的每个关键字进行一个SQL查询吗?

我正在从事内容重写程序,基本上它将用同义词替换单词.

我在MysqL数据库中有语法,该表包含3列

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 举报,一经查实,本站将立刻删除。

相关推荐