首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何搜索多个同义词?

如何搜索多个同义词?
EN

Database Administration用户
提问于 2020-12-26 16:57:01
回答 1查看 47关注 0票数 1

我有一个包含两个表的数据库: products和同义词。当用户键入一个或几个单词在products.description字段中搜索时,我也想搜索所有的同义词/替换词。

同义词表是基本的,必须列: word1和word2。其内容的例子:

  • 芯片<-> 8位
  • 洛菲<->洛菲
  • lo <-> 8位

在SQL中,当用户输入"chiptune“时,我如何向用户展示"lofi”这个词的形象?我试图实现的是“同义词之间的循环”,在这两方面。

如果你有想法的话,谢谢你。

EN

回答 1

Database Administration用户

发布于 2020-12-27 11:35:00

为了避免图中循环的问题,我建议您重新设计结构,以便:

代码语言:javascript
复制
CREATE TABLE products
( product_id ... NOT NULL PRIMARY KEY
, ...
);

CREATE TABLE synonym_groups
( synonym_group_id ... NOT NULL PRIMARY KEY
, ...
);

CREATE TABLE synonym_group_products
( synonym_group_id ... NOT NULL
, product_id NOT NULL PRIMARY KEY  -- A product belongs to exactly one group 
,     CONSTRAINT ... 
      FOREIGN KEY (synonym_group_id)
          REFERENCES synonym_groups (synonym_group_id)
,     CONSTRAINT ... 
      FOREIGN KEY (product_id)
          REFERENCES products (product_id)
);

我创建了一个小提琴,我只是使用整数作为键,因为我不知道什么可以识别您的实体。要获得芯片音的同义词:

代码语言:javascript
复制
select p2.*
FROM products p1
JOIN synonym_group_products sgp1
    ON p1.product_id = sgp1.product_id
JOIN synonym_group_products sgp2
    ON sgp1.synonym_group_id = sgp2.synonym_group_id
JOIN products p2
    ON sgp2.product_id = p2.product_id
WHERE p1.product_name = 'chiptune'
  AND p1.product_id <> p2.product_id;
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/282166

复制
相关文章

相似问题

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