如何在多个表中搜索数据?

Posted

技术标签:

【中文标题】如何在多个表中搜索数据?【英文标题】:How to search for data in many tables? 【发布时间】:2021-07-23 01:50:32 【问题描述】:

如何从我的数据库中搜索所有表中的数据?我需要在 Github 上创建某种搜索,在将短语输入搜索引擎后,它会查找我们的存储库、问题和用户,我需要执行类似的操作,但要搜索以下实体:User , OrderProjects,

我正在使用TypeORM,简单的搜索查询如下所示:

const data = await this.conn
      .getRepository(Order)
      .createQueryBuilder('order')
      .where('order.name = :name ',  name : name )
      .leftJoin('order.author', 'author')
      .orderBy('order.lastUpdate', 'DESC');

但是如何不仅在Order 实体中搜索,而且在UserProjects 等其他表中搜索?最大的公司搜索引擎是如何工作的?

【问题讨论】:

【参考方案1】:

像谷歌这样的大公司现在将他们的技术建立在人工智能之上,将它们作为一个系统来组织大数据 (see more on that here)。但是,google 最初使用的 Page Rank 算法会为从其他网站 (see here) 推荐率较高的网站分配更高的值。

听起来你会得到最大的收获是 LIKE 关键字 (see the basics) 与 UNION 关键字 (info here) 的组合。

在 SQL(我不知道 TypeORM)中,你可能会得到一些好的结果:

SELECT * FROM table1 WHERE name LIKE '%searchterm%'
UNION
SELECT * FROM table2 WHERE name LIKE '%searchterm%';

【讨论】:

以上是关于如何在多个表中搜索数据?的主要内容,如果未能解决你的问题,请参考以下文章

分库分表之后的搜索策略

iOS如何在少数Data表中搜索数据Parse swift 4

如何快速搜索出excel工作表中哪些单元格链接到其他数据源?

如何使用 PHP 和 Mysql 将搜索框放入数据库表中

如何获取在 SQL Server 内部数据库的不同表中重复的列[重复]

如何在 Joomla 中将数据存储到多个表中?