我想在数据库中保留一些条款。但是,它们可以有多个同义词。同义词的想法只是简单地用实际(原始)术语替换。
例如,我有一个术语“文案写作”,但该术语可能有多个实际使用的同义词,例如“网络写作”和“网络写作”。
我可以将它们放在一个单独的表中,并引用original_term_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)
然后,由于 synonyms
表中的 original_term_id
列,我将“webwriting”替换为“copywriting”。
由于我可能在 term
列上有索引,因此所提供的实现方法既快速又简单。
这是一个简单的解决方案。是否有任何明智的替代方案而不引入新表(同义词),同时解决方案保持快速和简单?
最佳答案
如果您想获取与术语或同义词关联的术语,可以将两者连接
在一起:
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;
您还可以简单地要求每个术语都是其自己的同义词。在这种情况下,查询会更简单(并且可能更高效):
select t.*
from terms t join
synonyms s
on s.term = t.term
where s.synonym = ?;
关于mysql - 可快速搜索同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59499812/