SQL如何保留同义词/替代词
我想知道如何在数据库中保存同义词。例如:SQL如何保留同义词/替代词,sql,ruby,Sql,Ruby,我想知道如何在数据库中保存同义词。例如: 单词school的同义词有:学院、学院 如果我填写“学校”表格,则答复应包括[学院、学院] 否则,如果我写大学,我想得到[学校,学院] 我想到了一个有一列的表,在那里我可以 college,academy,school, 然后我会用 SELECT * FROM synonyms WHERE word LIKE 'school' 这是解决这个问题的好办法吗?也许更好的方法是使用两张桌子?感谢您的所有回答。我个人会使用一个表单词,将多对多连接称为同义词。
college,academy,school,
然后我会用
SELECT * FROM synonyms WHERE word LIKE 'school'
这是解决这个问题的好办法吗?也许更好的方法是使用两张桌子?感谢您的所有回答。我个人会使用一个表
单词
,将多对多连接称为同义词。因此,实际上它将是两个表,words
带有id:integer,word:string
,第二个表是同义词\u words
:word\u id:integer,同义词\u id:integer
。那么您的sql查询将是:
SELECT synonyms.word
FROM words
INNER JOIN synonyms_words
ON synonym_words.words_id = words.id
INNER JOIN words AS synonyms
ON synonyms_words.synonyms_id = synonyms.id
WHERE words.word = 'school'
你的解决方案还可以,但不好。是的,您可以将一组同义词视为一个实体并存储它们。(不过,您可以使用分隔符来开始和结束每个组,即“学院、学院、学校”,以便能够询问诸如“%”,school,%”之类的单词的位置。)但是查找单词总是会导致全表扫描,这是不高效的 此外,要显示“学校”的同义词,您需要显示“学院,学院”而不是“学院,学院,学院”。也许有人会想再查一下“academy”的同义词。因此,你突然开始处理单个单词,而不是只处理同义词组。因此,不再建议将单词存储为串联字符串 你需要的是一张字表。你需要同义词组 您可以使用两个表执行此操作,一个表包含单词,另一个表包含同义词组: Table words: id | word ---+---------------- 1 | college 2 | school 3 | academy 4 | group of fish Table groups: id | id_word ---+---------------- 1 | 1 1 | 2 1 | 3 2 | 2 2 | 4 表格文字: id |字 ---+---------------- 1 |学院 2 |学校 3 |学院 4 |鱼群 表格组: id | id|u单词 ---+---------------- 1 | 1 1 | 2 1 | 3 2 | 2 2 | 4 或者使用一张桌子: Table groups: group_id | word ---------+----------------+ 1 | college 1 | school 1 | academy 2 | school 2 | group of fish 表格组: 组| id |字 ---------+----------------+ 1 |学院 1 |学校 1 |学院 2 |学校 2 |鱼群 这两种方法在易于访问、维护和存储等方面都有各自的优势