将多个 table 与完全相同的数据类型合并,并添加一列以标识来源 table

Combine multiple tables with exactly the same data types and add a column to identify the table of origin

我们正在建设一个网站,该网站共有 8 个静态网页。使用 'Content' table/model 生成每个网页。

所以我们有一个 HomeContent 和一个 FAQContent table 等等

每个 tables/models 包含以下 3 列:

列:

Id | Type | Content

示例数据:

1 | h1   | "Welcome to our website!"

现在,我是一个菜鸟,我很难为我们的网站创建搜索功能。此搜索功能必须允许用户获得搜索结果页面,其中包含指向其搜索词所在网页的链接。

我的想法是将我们拥有的所有内容 table 组合成一个大内容 table,并在这个大内容 table 中添加一个名为 [=45] 的列=],它将包含数据最初来自的 table 的类型。

所以我希望得到类似的东西:

Id | Type | Content      | Location 
---+------+--------------+------------
1  | h1   | "Welcome!"   | Home
2  | label| "Weather"    | Info
3  | h4   | "Hello there"| Contact

可能有更简单的方法来创建一个有效的网站搜索引擎,但我(令人沮丧地)没有足够的知识来考虑任何其他方法...

谁能帮帮我?

编辑:

其他信息:以及用于我们主页的 HomeContent 模型示例:

public class HomeContent
{
    public int Id { get; set; }
    public string Type { get; set; }
    public string Content { get; set; }
}

您应该修复数据模型并将所有内容存储在一个唯一的 table 中,其中一列包含每行所属的位置。

同时,您可以使用 union all 创建一个视图来模拟:

create view AllContents as
select id, type, content, 'Home' location from HomeContent
union all select id, type, content, 'Info' from InfoContent
union all ...

然后您可以搜索视图:

select * from AllContents where content like '%mySearchValue%'

正如 Gordon Linoff 所说,您可能还想看看全文搜索功能,它提供了一个内置解决方案来执行高效的文本搜索。