合并具有完全相同数据类型的多个表,并添加一列以标识源表

问题描述 投票:0回答:1

我们正在建立一个网站,该网站总共托管8个静态网页。使用“内容”表/模型生成每个网页。因此,我们有一个“ HomeContent”表,一个“ FAQContent”表等。

这些表/模型中的每一个都包含以下3列:

[栏:

  • Id |类型内容

示例数据:

  • 1 | h1 | “欢迎访问我们的网站!”

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

我的想法是将我们拥有的所有Content表合并为一个大的Content表,并在此大的Content表中添加一列,称为'Location',其中将包含表的类型,数据最初来自该表。

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

Id |类型内容|位置

1 | h1 | “欢迎!” |主页

2 |标签| “天气” |信息

3 | h4 | “你好!” |联系人

创建工作的网站搜索引擎可能有一种更简单的方法,但是我(沮丧地)不了解任何其他方法...

[任何人都可以帮我吗?


编辑:

附加信息:

以及用于我们主页的'HomeContent'模型的示例:

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

}

sql sql-server datatable union search-engine
1个回答
0
投票

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

同时,您可以使用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)所说,您可能还想看看全文搜索功能,该功能提供了一种内置解决方案来执行有效的文本搜索。

© www.soinside.com 2019 - 2024. All rights reserved.