Вы можете вставить универсальный поиск в любое место страницы, а также делать их несколько на сайте. Каждый из них будет обрабатываться одной и той же процедурой search, но при этом ей может передаваться разный typeID. При этом разные типы поисков могут делаться по разному набору объектов (т.е. как будет задано в sql-процедуре.)
Для размещения глобального поиска используем подобную верстку:
<select class="form-control as-select-search hide" data-url="/controls/search/search" data-itemid="100" data-minlength="1" data-delay="1000">
<option value="0">Поиск по документации...</option>
</select>
data-itemID задает @typeID в процедуре falcon_search.
Вы также можете установить задержку поиска при наборе с клавиатуры через атрибут data-delay и минимальное количество символов для поиска через атрибут data-minlength.
В процедуре поиска вы можете обработать следующим образом:
CREATE PROCEDURE [dbo].[falcon_search]
@q nvarchar(256),
@typeID int,
@page nvarchar(256) = '',
@username nvarchar(256)
AS
BEGIN
CREATE TABLE dbo.#result (id int, [text] nvarchar(max), [desc] nvarchar(max),[type] nvarchar(256),
[date] date)
if(@typeID=100) begin
-- работа отдельного поиска
insert into #result
select top 15 id,
' '+title+'',
'Обновил: ' + updatedBy + ' ' + convert(nvarchar,isnull(updated,'2020-01-01'),104) + ' ' + LEFT(convert(nvarchar, isnull(updated,'2020-01-01'),108),5),
'',
getdate()
from kb_articles where isPublish=1 and ( (title like '%'+@q+'%') or (text like '%'+@q+'%') )
order by id desc
select * from #result
drop table #result
return
end
-- остальные поиски ....
END
Пример работы данного поиска есть в базе знаний (справа вверху).