数据库
首页 > 数据库> > 我需要对文本中的每个关键字进行一个SQL查询吗?

我需要对文本中的每个关键字进行一个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)上创建索引

使用此方法的原因有很多:

>灵活:每个单词的同义词数量没有限制
>高效:由于规范化,行的大小非常小,因此每个数据库页面可容纳许多行,从而使更多的页面适合可用内存

标签:mysql-management,sql,mysql,php
来源: https://codeday.me/bug/20191023/1913571.html