首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同义词表的替代设计?

同义词表的替代设计?
EN

Stack Overflow用户
提问于 2010-05-27 02:12:25
回答 4查看 644关注 0票数 1

我正在开发一个应用程序,它为输入文本提供替代词/短语。对于同义词表的好设计,我有疑问。

设计考虑因素:

同义词的

  1. 数是可变的,即football有一个同义词(soccer),而in particular有两个(particularlyin particular footballsoccer的同义词,这种关系也在相反的方向上存在。

H 112我们的目标是查询一个单词并找到它的同义词H 213H 114,我们希望保持小的表,使添加新单词很容易H 215G 216>G 216

我脑海中想到的是两栏设计

  • col a = word and
  • col b = delimited list of synonyms

还有更好的选择吗?用两张桌子怎么样,一张是用词,另一张是关系?

编辑:

读完答案后,我想到了另一种方法。它使用的是一个列表,其中包含所有同义词单词,每个同义词都封装在word边界标记中。我的意思是

|in particular|particularly|specifically|

然后我会用

SELECT * FROM synonyms WHERE word LIKE '%|specifically|%'

在代码中,我丢弃了前面和后面的|s,进行了拆分,并使用了同义词。

有什么不好的吗,我没看到?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-30 14:48:10

读完答案后,我想到了另一种方法。它使用的是一个列表,其中包含所有同义词单词,每个同义词都封装在word边界标记中。我的意思是

|in particular|particularly|specifically|

然后我会用

代码语言:javascript
复制
SELECT * FROM `synonyms` WHERE `word` LIKE '%|$word|%'

在代码中,我删除了前面和后面的|s,并做了一个explode,并具有同义词:

代码语言:javascript
复制
$synonyms = $row['word'];
$synonyms = explode('|', substr($synonyms, 1, -1));
unset($synonyms[$word]);
票数 -1
EN

Stack Overflow用户

发布于 2010-05-27 02:19:08

  • col a= word和
  • col=分隔的同义词列表

糟糕的主意。每次添加同义词时,必须在两个地方更改它。只需加对

代码语言:javascript
复制
(in particular, particularly)
(in particular, specifically)

并在(a,b)a < b中强制执行。那样的话,就不会有冗余了。

使用两个表也可以,可能会节省内存。但是,您的查询中还会有一个加入。

票数 4
EN

Stack Overflow用户

发布于 2010-05-27 02:19:12

由于三个原因,我将使用两种表格方法,一种用于文字,另一种用于关系,而不是单一表格方法。

  1. 在word表中不会有重复的单词。
  2. 更容易执行单词与其同义词之间的双向关系。
  3. 编写在分隔列表上工作的SQL语句更繁琐。

Word表:2列IdWord

关系表:2列WordId1WordId2

具有两个synomym的单词将在Word表中有一行,在Relation表中有两行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2918068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档