Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 快速搜索同义词术语_Mysql_Sql - Fatal编程技术网

Mysql 快速搜索同义词术语

Mysql 快速搜索同义词术语,mysql,sql,Mysql,Sql,我想保留一些条款。但是,它们可以有多个同义词。同义词的概念只是被实际的(原始的)术语所取代 例如,我有一个术语“文案写作”,但这个术语可能有多个实际使用的同义词,如“网络写作”和“网络写作” 我可以将它们放在一个单独的表格中,并参考原始\u term\u id。有了这样的解决方案,我可以轻松查看所有条款: SELECT * FROM terms WHERE term = "webwriting" (result would be 0 - as "webwriting is a synonym

我想保留一些条款。但是,它们可以有多个同义词。同义词的概念只是被实际的(原始的)术语所取代

例如,我有一个术语“文案写作”,但这个术语可能有多个实际使用的同义词,如“网络写作”和“网络写作”

我可以将它们放在一个单独的表格中,并参考
原始\u term\u id
。有了这样的解决方案,我可以轻松查看所有条款:

SELECT * FROM terms WHERE term = "webwriting"

(result would be 0 - as "webwriting is a synonym in DB)
因此,如果没有找到任何内容,我还可以搜索其他表:

SELECT * FROM synonyms WHERE term = "webwriting"

(result would be 1 - as "webwriting is placed in this table)
然后,由于
同义词表中的
original\u term\u id
列,我将“webwriting”替换为“copywriting”

由于我可能在
术语
列上有索引,因此本文介绍的实现方法既快速又简单


这是一个简单的解决方案。在不引入新表(同义词)的情况下,有没有明智的替代方案,而解决方案仍然快速简单?

如果您想获得与术语或同义词相关联的术语,您可以
将两者结合在一起:

select t.*
from terms t left join
     synonyms s
     on s.term = t.term and s.synonym = ?
where t.term = ? or s.term is not null;
您也可以简单地要求每个术语都是它自己的同义词。在这种情况下,查询更简单(并且可能更高效):


我不明白你的问题是什么。你能更清楚地说明你想要什么样的结果吗?见我在Gordon Linoff回复下的评论。它解释了我想要什么,我考虑了什么选择。谢谢。我想知道是应该保留
同义词表(作为原始解决方案),还是应该使用另一个表-例如,将术语及其同义词保留在同一个表中。。。缺点是术语记录应该有额外的信息,这些信息对于同义词是多余的(只是对另一个术语的简单引用)。@forsberg。保留同义词表。确保表中所有术语都是它们自己的同义词。你能详细说明一下缺点是什么,也许能给出问题的答案吗?
select t.*
from terms t join
     synonyms s
     on s.term = t.term 
where s.synonym = ?;