Возможно, вы могли бы создать представления для каждого из 5 типов (vwBook, vwArticle и т. Д.)
Во время поиска, возможно, позвоните в сохраненный процесс, который будет использовать все 5 представлений, используя ключевые слова, которые вы к нему добавляете. Каждый из 5 результатов может быть помещен в табличную переменную вашего хранимого процесса.
Измените, конечно, по своему усмотрению. Вот пример с широким штрихом:
create proc MySearch
@MySearchTerm varchar(50)
AS
DECLARE @SearchResultsTABLE
(
Type varchar(10) -- the view you found the result in.
,ID int -- the primary key of the Book record. whatever you want to link it back to the original
,FoundText varchar(512)
--etc
)
INSERT INTO @SearchResults(Type, ID, FoundText)
SELECT 'Articles', ID, SomeKeyField
FROM vwArticle
WHERE SomeKeyField LIKE '%' + @MySearchTerm + '%'
INSERT INTO @SearchResults(Type, ID, FoundText)
SELECT 'Book', ID, SomeKeyField
FROM vwBook
WHERE SomeKeyField LIKE '%' + @MySearchTerm + '%'
--repeat as needed with the 3 other views that you'd build
SELECT * FROM @SearchResults