mysql - 可快速搜索同义词

标签 mysql sql

我想在数据库中保留一些条款。但是,它们可以有多个同义词。同义词的想法只是简单地用实际(原始)术语替换。

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

我可以将它们放在一个单独的表中,并引用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/

相关文章:

python - 使用 pandas 写入 sql 数据库

sql - 涉及三个表的复杂更新

php - 资源 ID#5 PHP MySQL 错误

php - 根据 MYSQL 数据类型检查 PHP 变量类型

php - 回显查询的值

mysql - 根据条件合并两个 SQL 表

php - 加载评论时加入查询

php - 使用php将数据合并到一列mysql中

mysql - SQL查询,仅当列不为空时才选择,否则不选择

MySQL优化sql join查询