Объедините несколько таблиц с одинаковыми типами данных и добавьте столбец для определения исходной таблицы - PullRequest
0 голосов
/ 20 января 2020

Мы находимся в процессе создания веб-сайта, на котором размещено в общей сложности 8 страниц c веб-страниц. Каждая из веб-страниц генерируется с использованием таблицы / модели «Контент».

Итак, у нас есть таблица HomeContent и FAQContent et c.

Каждая из этих таблиц / моделей содержит следующие 3 столбца:

Столбцы:

Id | Type | Content

Пример данных:

1 | h1   | "Welcome to our website!"

Теперь я новичок, и мне сложно создать функцию поиска для нашего веб-сайта. Эта функциональность поиска должна позволять пользователям получать страницу результатов поиска, содержащую ссылки на веб-страницы, где находится их поисковое слово.

Моя идея состоит в том, чтобы объединить все имеющиеся у нас таблицы содержимого в одну большую таблицу содержимого и добавить в эту большую таблицу содержимого столбец с именем «Location», который будет содержать тип таблицы, из которой данные изначально пришли.

Так что я надеюсь получить что-то вроде:

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; }
}

1 Ответ

1 голос
/ 20 января 2020

Вы должны исправить свою модель данных и сохранить все содержимое в уникальной таблице со столбцом, содержащим местоположение, которому принадлежит каждая строка.

Тем временем, вы можете использовать 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%'

Как прокомментировал Гордон Линофф, вы также можете взглянуть на функциональность полнотекстового поиска , который предоставляет встроенное решение для эффективного поиска текста.

...